// ~~ icebear ~~
#include <bits/stdc++.h>
using namespace std;
#define int ll
typedef long long ll;
typedef pair<int, int> ii;
typedef pair<int, ii> iii;
template<class T>
bool minimize(T &a, const T &b) {
if (a > b) return a = b, true;
return false;
}
template<class T>
bool maximize(T &a, const T &b) {
if (a < b) return a = b, true;
return false;
}
#define FOR(i,a,b) for(int i=(a); i<=(b); ++i)
#define FORR(i,a,b) for(int i=(a); i>=(b); --i)
#define REP(i, n) for(int i=0; i<(n); ++i)
#define RED(i, n) for(int i=(n)-1; i>=0; --i)
#define MASK(i) (1LL << (i))
#define BIT(S, i) (((S) >> (i)) & 1)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define task "convex"
const int MOD = 1e9 + 7;
const int inf = 1e9 + 27092008;
const ll INF = 1e18 + 27092008;
const int N = 3e5 + 5;
int n, a[N];
int L[N], R[N];
ll pref[N];
int ft[N];
void update(int x, int val) {
for(; x <= n + 1; x += x & -x) ft[x] += val;
}
int get(int x) {
int ans = 0;
for(; x; x -= x & -x) ans += ft[x];
return ans;
}
vector<pair<ll, int>> Q[N], Q2[N];
void init(void) {
cin >> n;
FOR(i, 1, n) cin >> a[i], pref[i] = pref[i - 1] + a[i];
}
void process(void) {
stack<int> st;
FOR(i, 1, n) {
while(!st.empty() && a[st.top()] <= a[i]) st.pop();
L[i] = (st.empty() ? 1 : st.top() + 1);
st.push(i);
}
st = stack<int>();
FORR(i, n, 1) {
while(!st.empty() && a[st.top()] < a[i]) st.pop();
R[i] = (st.empty() ? n : st.top() - 1);
st.push(i);
}
ll ans = 0;
FOR(i, 1, n) {
if (i - L[i] <= R[i] - i) {
FOR(j, L[i], i) {
Q[i - 1].emplace_back(2 * a[i] + pref[j - 1], -1);
Q[R[i]].emplace_back(2 * a[i] + pref[j - 1], +1);
}
} else {
FOR(j, i, R[i]) {
Q2[L[i] - 1].emplace_back(pref[j] - 2 * a[i], -1);
Q2[i].emplace_back(pref[j] - 2 * a[i], +1);
}
}
}
vector<ll> compress;
FOR(i, 0, n) compress.pb(pref[i]);
sort(all(compress));
compress.resize(unique(all(compress)) - compress.begin());
// pref[l - 1] < pref[r] - 2 * a[i]
FOR(i, 1, n) {
int pos = upper_bound(all(compress), pref[i - 1]) - compress.begin();
update(pos, +1);
for(auto &x : Q2[i]) {
int p = upper_bound(all(compress), x.fi) - compress.begin();
if (compress[p - 1] == x.fi) p--;
// p--;
if (p > 0) ans += get(p) * x.se;
}
}
// pref[r] > val = 2 * a[i] + pref[l - 1]
memset(ft, 0, sizeof ft);
FOR(i, 1, n) {
int pos = upper_bound(all(compress), pref[i]) - compress.begin();
update(pos, +1);
for(auto &x : Q[i]) {
int p = upper_bound(all(compress), x.fi) - compress.begin();
ans += (i - get(p)) * x.se;
}
}
cout << ans;
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if (fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int tc = 1;
// cin >> tc;
while(tc--) {
init();
process();
}
return 0;
}
Ly8gfn4gaWNlYmVhciB+fgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbGwKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gaWk7CnR5cGVkZWYgcGFpcjxpbnQsIGlpPiBpaWk7Cgp0ZW1wbGF0ZTxjbGFzcyBUPgogICAgYm9vbCBtaW5pbWl6ZShUICZhLCBjb25zdCBUICZiKSB7CiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gYSA9IGIsIHRydWU7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKdGVtcGxhdGU8Y2xhc3MgVD4KICAgIGJvb2wgbWF4aW1pemUoVCAmYSwgY29uc3QgVCAmYikgewogICAgICAgIGlmIChhIDwgYikgcmV0dXJuIGEgPSBiLCB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiNkZWZpbmUgRk9SKGksYSxiKSBmb3IoaW50IGk9KGEpOyBpPD0oYik7ICsraSkKI2RlZmluZSBGT1JSKGksYSxiKSBmb3IoaW50IGk9KGEpOyBpPj0oYik7IC0taSkKI2RlZmluZSBSRVAoaSwgbikgZm9yKGludCBpPTA7IGk8KG4pOyArK2kpCiNkZWZpbmUgUkVEKGksIG4pIGZvcihpbnQgaT0obiktMTsgaT49MDsgLS1pKQojZGVmaW5lIE1BU0soaSkgKDFMTCA8PCAoaSkpCiNkZWZpbmUgQklUKFMsIGkpICgoKFMpID4+IChpKSkgJiAxKQojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIHRhc2sgImNvbnZleCIKCmNvbnN0IGludCBNT0QgPSAxZTkgKyA3Owpjb25zdCBpbnQgaW5mID0gMWU5ICsgMjcwOTIwMDg7CmNvbnN0IGxsIElORiA9IDFlMTggKyAyNzA5MjAwODsKY29uc3QgaW50IE4gPSAzZTUgKyA1OwppbnQgbiwgYVtOXTsKaW50IExbTl0sIFJbTl07CmxsIHByZWZbTl07CmludCBmdFtOXTsKCnZvaWQgdXBkYXRlKGludCB4LCBpbnQgdmFsKSB7CiAgICBmb3IoOyB4IDw9IG4gKyAxOyB4ICs9IHggJiAteCkgZnRbeF0gKz0gdmFsOwp9CgppbnQgZ2V0KGludCB4KSB7CiAgICBpbnQgYW5zID0gMDsKICAgIGZvcig7IHg7IHggLT0geCAmIC14KSBhbnMgKz0gZnRbeF07CiAgICByZXR1cm4gYW5zOwp9Cgp2ZWN0b3I8cGFpcjxsbCwgaW50Pj4gUVtOXSwgUTJbTl07Cgp2b2lkIGluaXQodm9pZCkgewogICAgY2luID4+IG47CiAgICBGT1IoaSwgMSwgbikgY2luID4+IGFbaV0sIHByZWZbaV0gPSBwcmVmW2kgLSAxXSArIGFbaV07Cn0KCnZvaWQgcHJvY2Vzcyh2b2lkKSB7CiAgICBzdGFjazxpbnQ+IHN0OwogICAgRk9SKGksIDEsIG4pIHsKICAgICAgICB3aGlsZSghc3QuZW1wdHkoKSAmJiBhW3N0LnRvcCgpXSA8PSBhW2ldKSBzdC5wb3AoKTsKICAgICAgICBMW2ldID0gKHN0LmVtcHR5KCkgPyAxIDogc3QudG9wKCkgKyAxKTsKICAgICAgICBzdC5wdXNoKGkpOwogICAgfQoKICAgIHN0ID0gc3RhY2s8aW50PigpOwoKICAgIEZPUlIoaSwgbiwgMSkgewogICAgICAgIHdoaWxlKCFzdC5lbXB0eSgpICYmIGFbc3QudG9wKCldIDwgYVtpXSkgc3QucG9wKCk7CiAgICAgICAgUltpXSA9IChzdC5lbXB0eSgpID8gbiA6IHN0LnRvcCgpIC0gMSk7CiAgICAgICAgc3QucHVzaChpKTsKICAgIH0KCiAgICBsbCBhbnMgPSAwOwogICAgRk9SKGksIDEsIG4pIHsKICAgICAgICBpZiAoaSAtIExbaV0gPD0gUltpXSAtIGkpIHsKICAgICAgICAgICAgRk9SKGosIExbaV0sIGkpIHsKICAgICAgICAgICAgICAgIFFbaSAtIDFdLmVtcGxhY2VfYmFjaygyICogYVtpXSArIHByZWZbaiAtIDFdLCAtMSk7CiAgICAgICAgICAgICAgICBRW1JbaV1dLmVtcGxhY2VfYmFjaygyICogYVtpXSArIHByZWZbaiAtIDFdLCArMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBGT1IoaiwgaSwgUltpXSkgewogICAgICAgICAgICAgICAgUTJbTFtpXSAtIDFdLmVtcGxhY2VfYmFjayhwcmVmW2pdIC0gMiAqIGFbaV0sIC0xKTsKICAgICAgICAgICAgICAgIFEyW2ldLmVtcGxhY2VfYmFjayhwcmVmW2pdIC0gMiAqIGFbaV0sICsxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICB2ZWN0b3I8bGw+IGNvbXByZXNzOwogICAgRk9SKGksIDAsIG4pIGNvbXByZXNzLnBiKHByZWZbaV0pOwogICAgc29ydChhbGwoY29tcHJlc3MpKTsKICAgIGNvbXByZXNzLnJlc2l6ZSh1bmlxdWUoYWxsKGNvbXByZXNzKSkgLSBjb21wcmVzcy5iZWdpbigpKTsKCi8vICBwcmVmW2wgLSAxXSA8IHByZWZbcl0gLSAyICogYVtpXQogICAgRk9SKGksIDEsIG4pIHsKICAgICAgICBpbnQgcG9zID0gdXBwZXJfYm91bmQoYWxsKGNvbXByZXNzKSwgcHJlZltpIC0gMV0pIC0gY29tcHJlc3MuYmVnaW4oKTsKICAgICAgICB1cGRhdGUocG9zLCArMSk7CgogICAgICAgIGZvcihhdXRvICZ4IDogUTJbaV0pIHsKICAgICAgICAgICAgaW50IHAgPSB1cHBlcl9ib3VuZChhbGwoY29tcHJlc3MpLCB4LmZpKSAtIGNvbXByZXNzLmJlZ2luKCk7CiAgICAgICAgICAgIGlmIChjb21wcmVzc1twIC0gMV0gPT0geC5maSkgcC0tOwovLyAgICAgICAgICAgIHAtLTsKICAgICAgICAgICAgaWYgKHAgPiAwKSBhbnMgKz0gZ2V0KHApICogeC5zZTsKICAgICAgICB9CiAgICB9CgovLyAgcHJlZltyXSA+IHZhbCA9IDIgKiBhW2ldICsgcHJlZltsIC0gMV0KICAgIG1lbXNldChmdCwgMCwgc2l6ZW9mIGZ0KTsKICAgIEZPUihpLCAxLCBuKSB7CiAgICAgICAgaW50IHBvcyA9IHVwcGVyX2JvdW5kKGFsbChjb21wcmVzcyksIHByZWZbaV0pIC0gY29tcHJlc3MuYmVnaW4oKTsKICAgICAgICB1cGRhdGUocG9zLCArMSk7CiAgICAgICAgZm9yKGF1dG8gJnggOiBRW2ldKSB7CiAgICAgICAgICAgIGludCBwID0gdXBwZXJfYm91bmQoYWxsKGNvbXByZXNzKSwgeC5maSkgLSBjb21wcmVzcy5iZWdpbigpOwogICAgICAgICAgICBhbnMgKz0gKGkgLSBnZXQocCkpICogeC5zZTsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCBhbnM7Cn0KCnNpZ25lZCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgaWYgKGZvcGVuKHRhc2siLmlucCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKHRhc2siLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4odGFzayIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgaW50IHRjID0gMTsKLy8gICAgIGNpbiA+PiB0YzsKICAgIHdoaWxlKHRjLS0pIHsKICAgICAgICBpbml0KCk7CiAgICAgICAgcHJvY2VzcygpOwogICAgfQogICAgcmV0dXJuIDA7Cn0K