// 引入C++标准库的所有头文件,竞赛中常用
#include<bits/stdc++.h>
// 使用标准命名空间,避免每次写std::
using namespace std;
// 将int类型重定义为long long,防止数值溢出
#define int long long
// 定义数组的最大长度,2e5+10是竞赛中常见的数组大小设置
const int N=2e5+10;

// 全局变量声明
int n;          // 表示输入的元素个数
int P[N];       // 存储原始输入的数组
int sum[N];     // 前缀和数组,sum[i]表示前i个元素的和

// 核心解题函数
void solve(){
    // 定义三个变量分别存储三个区间的和
    int area1,area2,area3;
    // 存储最终符合条件的方案数
    int res=0;
    
    // 外层循环:枚举第一个分割点i,i最多到n-2(保证后面至少有两个元素)
    for(int i=1,j=2;i<=n-2;i++){
        // 计算三个区间的和:
        // area1: [1, i] 的和(前缀和sum[i]-sum[0])
        area1=sum[i]-sum[0];
        // area2: [i+1, j] 的和
        area2=sum[j]-sum[i];
        // area3: [j+1, n] 的和
        area3=sum[n]-sum[j];
        
        // 内层循环:移动第二个分割点j,寻找满足条件的最小j
        // 条件:j+1不超过n-1(保证area3至少有一个元素),且area1>=area2 或 area3>=area2
        while(j+1<=n-1&&(area1>=area2||area3>=area2)){
            j++;                // j右移一位
            area2=sum[j]-sum[i];// 更新area2
            area3=sum[n]-sum[j];// 更新area3
        }
        
        // 如果找到满足条件的j(area1 < area2 且 area3 < area2)
        if((area1<area2)&&(area3<area2)){
            // 从j到n-1的所有位置都满足条件,累加方案数
            res+=n-j;
        }
    }
    // 输出最终结果
    cout<<res<<endl;
}

// 主函数,程序入口
signed main(){
    // 关闭同步流,加速cin/cout的输入输出速度(竞赛常用优化)
    ios::sync_with_stdio(false);
    // 解绑cin和cout,进一步加速输出
    cin.tie(0);
    
    // 输入元素个数n
    cin>>n;
    // 输入n个元素,并构建前缀和数组
    for(int i=1;i<=n;i++){
        cin>>P[i];                  // 输入第i个元素
        sum[i]=sum[i-1]+P[i];       // 计算前缀和,sum[i] = sum[0..i]
    }
    
    // 调用解题函数
    solve();

    return 0;
}