// ROOT : DRAGON3012009
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define el "\n"
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define __ROOT__ int main()
#pragma GCC optimize("O2")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define fi first
#define se second
#define M 1000000007
#define MAXN 1000001
#define INF (1ll<<30)
#define BLOCK_SIZE 425
#define MAX_NODE 1001001
#define LOG 19
#define ALPHA_SIZE 26
#define BASE 256
#define NAME "file"
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
using namespace std;
using namespace chrono ;
const ll MOD[] = {(ll)1e9 + 2277, (ll)1e9 + 5277, (ll)1e9 + 8277, (ll)1e9 + 9277, (ll) 1e9 + 7 };
const ll NMOD = 1;
const int dx[] = {-1, 0, 1,0};
const int dy[] = {0, 1, 0, -1};
//**Variable**//
ll n ;
ll pref[MAXN] ;
ll arr[MAXN];
ll l[MAXN] ;
ll r[MAXN] ;
//**Struct**//
//**Function**//
template<class X, class Y >
bool minimize(X & x, const Y &y ) {
return x > y ? x = y, 1:0 ;
}
template<class X, class Y >
bool maximize(X &x, const Y &y ) {
return x < y ? x = y, 1:0 ;
}
void init() {
cin>>n;
FOR(i,1, n) cin >> arr[i] , pref[i] = pref[i-1] + arr[i] ;
}
stack<ll> st ;
void solve() {
FOR(i, 1, n ) {
while(!st.empty() && arr[i] >= arr[st.top() ] ) st.pop() ;
l[i] = st.empty() ? 1 : st.top() + 1 ;
st.push(i) ;
}
while(!st.empty()) st.pop() ;
FORD(i, n, 1 ) {
while(!st.empty() && arr[i] > arr[st.top() ] )st.pop() ;
r[i] = st.empty() ? n : st.top() - 1 ;
st.push(i) ;
}
ll ans = 0 ;
FOR(i, 1, n ) {
ll len_L = i - l[i] + 1 ;
ll len_R = r[i] - i + 1;
if(len_L <= len_R) {
FOR(k , l[i] , i ) {
ll target = 2 * arr[i] + pref[k - 1] ;
ll pos = upper_bound(pref + i , pref + r[i] + 1 , target ) - pref ;
if(pos <= r[i] ) ans+= r[i] - pos + 1 ;
}
}else {
FORD(k , r[i] , i ) {
ll target = pref[k] - 2 * arr[i] ;
ll pos = lower_bound(pref + l[i] - 1 , pref + i , target ) - pref ;
ans += pos - l[i] + 1 ;
}
}
}
cout << ans << el ;
}
__ROOT__ {
// freopen(NAME".inp" , "r" , stdin);
// freopen(NAME".out" , "w", stdout) ;
fast;
srand(time(nullptr)) ;
int t = 1; // cin >> t ;
while(t--) {
init();
solve();
}
return (0&0);
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmFzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKI2RlZmluZSBfX1JPT1RfXyBpbnQgbWFpbigpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJPMiIpCi8vI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCi8vI3ByYWdtYSBHQ0MgdGFyZ2V0KCJhdngyLGJtaSxibWkyLHBvcGNudCxsemNudCIpCiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgTSAxMDAwMDAwMDA3CiNkZWZpbmUgTUFYTiAxMDAwMDAxCiNkZWZpbmUgSU5GICgxbGw8PDMwKQojZGVmaW5lIEJMT0NLX1NJWkUgNDI1CiNkZWZpbmUgTUFYX05PREUgMTAwMTAwMQojZGVmaW5lIExPRyAxOQojZGVmaW5lIEFMUEhBX1NJWkUgMjYKI2RlZmluZSBCQVNFIDI1NgojZGVmaW5lIE5BTUUgImZpbGUiCiNkZWZpbmUgY29tcGFyZSh2KSBzb3J0KCh2KS5iZWdpbigpLCAodikuZW5kKCkpOyAodikuZXJhc2UodW5pcXVlKCh2KS5iZWdpbigpLCAodikuZW5kKCkpLCAodikuZW5kKCkpOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgY2hyb25vIDsKY29uc3QgbGwgTU9EW10gPSB7KGxsKTFlOSArIDIyNzcsIChsbCkxZTkgKyA1Mjc3LCAobGwpMWU5ICsgODI3NywgKGxsKTFlOSArIDkyNzcsIChsbCkgMWU5ICsgNyB9Owpjb25zdCBsbCBOTU9EID0gMTsKY29uc3QgaW50IGR4W10gPSB7LTEsIDAsIDEsMH07CmNvbnN0IGludCBkeVtdID0gezAsIDEsIDAsIC0xfTsKLy8qKlZhcmlhYmxlKiovLwpsbCBuIDsKbGwgcHJlZltNQVhOXSA7CmxsIGFycltNQVhOXTsKbGwgbFtNQVhOXSA7CmxsIHJbTUFYTl0gOwovLyoqU3RydWN0KiovLwoKLy8qKkZ1bmN0aW9uKiovLwp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZID4KYm9vbCBtaW5pbWl6ZShYICYgeCwgY29uc3QgWSAmeSApIHsKICAgIHJldHVybiB4ID4geSA/IHggPSB5LCAxOjAgOwp9CnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFkgPgpib29sIG1heGltaXplKFggJngsIGNvbnN0IFkgJnkgKSB7CiAgICByZXR1cm4geCA8IHkgPyB4ID0geSwgMTowIDsKfQoKdm9pZCBpbml0KCkgewogICAgY2luPj5uOwogICAgRk9SKGksMSwgbikgY2luID4+IGFycltpXSAsIHByZWZbaV0gPSBwcmVmW2ktMV0gKyBhcnJbaV0gIDsKfQpzdGFjazxsbD4gc3QgOwp2b2lkIHNvbHZlKCkgewogICAgRk9SKGksIDEsICBuICkgewogICAgICAgIHdoaWxlKCFzdC5lbXB0eSgpICYmIGFycltpXSA+PSBhcnJbc3QudG9wKCkgXSApIHN0LnBvcCgpIDsKICAgICAgICBsW2ldID0gc3QuZW1wdHkoKSA/IDEgOiBzdC50b3AoKSArIDEgOwogICAgICAgIHN0LnB1c2goaSkgOwogICAgfQogICAgd2hpbGUoIXN0LmVtcHR5KCkpIHN0LnBvcCgpIDsKICAgIEZPUkQoaSwgIG4sIDEgKSB7CiAgICAgICAgd2hpbGUoIXN0LmVtcHR5KCkgJiYgYXJyW2ldID4gYXJyW3N0LnRvcCgpIF0gKXN0LnBvcCgpIDsKICAgICAgICByW2ldID0gc3QuZW1wdHkoKSA/IG4gOiBzdC50b3AoKSAtIDEgOwogICAgICAgIHN0LnB1c2goaSkgOwogICAgfQogICAgbGwgYW5zID0gMCA7CiAgICBGT1IoaSwgMSwgIG4gKSB7CiAgICAgICAgbGwgbGVuX0wgPSBpIC0gbFtpXSArIDEgOwogICAgICAgIGxsIGxlbl9SID0gcltpXSAtIGkgKyAxOwogICAgICAgIGlmKGxlbl9MIDw9IGxlbl9SKSB7CiAgICAgICAgICAgIEZPUihrICwgbFtpXSAsIGkgKSB7CiAgICAgICAgICAgICAgICBsbCB0YXJnZXQgPSAyICogYXJyW2ldICsgcHJlZltrIC0gMV0gOwogICAgICAgICAgICAgICAgbGwgcG9zID0gdXBwZXJfYm91bmQocHJlZiArIGkgLCBwcmVmICsgcltpXSArIDEgLCB0YXJnZXQgKSAtIHByZWYgOwogICAgICAgICAgICAgICAgaWYocG9zIDw9IHJbaV0gKSBhbnMrPSByW2ldIC0gcG9zICsgMSA7CiAgICAgICAgfQogICAgICAgIH1lbHNlIHsKICAgICAgICBGT1JEKGsgLCByW2ldICwgaSApIHsKICAgICAgICAgICAgbGwgdGFyZ2V0ID0gcHJlZltrXSAtIDIgKiBhcnJbaV0gOwogICAgICAgICAgICBsbCBwb3MgPSBsb3dlcl9ib3VuZChwcmVmICsgbFtpXSAtIDEgLCBwcmVmICsgaSAsIHRhcmdldCApIC0gcHJlZiA7CiAgICAgICAgICAgIGFucyArPSBwb3MgLSBsW2ldICsgMSA7CiAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8IGVsICA7Cn0KCl9fUk9PVF9fIHsKICAgIC8vIGZyZW9wZW4oTkFNRSIuaW5wIiAsICJyIiAsIHN0ZGluKTsKICAgIC8vIGZyZW9wZW4oTkFNRSIub3V0IiAsICJ3Iiwgc3Rkb3V0KSA7CiAgICBmYXN0OwogICAgc3JhbmQodGltZShudWxscHRyKSkgOwogICAgaW50IHQgPSAxOyAvLyBjaW4gPj4gdCA7CiAgICB3aGlsZSh0LS0pIHsKICAgICAgICBpbml0KCk7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAoMCYwKTsKfQoKCgo=