#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long sl;
vector <ll> a;
int mex_subarray( int l, int r) {
set<int> s;
for (int i = l-1; i <r ;i++)
s.insert(a[i]);
int m = 0;
while (s.count(m))
m++;
return m;
}
void solve(){
int n ;cin >> n ;
a.resize(n);
vector <ll >presum(n+1) ;
map <ll ,int> idx , cnt;
idx[0] =0 ;
for (int i=0 ; i <n ;i++) {
cin >> a[i] ;
presum[i+1] = presum[i] + a[i] ;
cnt[presum[i+1]]++ ;
if (idx.find(presum[i+1]) == idx.end()) idx[presum[i+1]] = i+1;
}
int ans = 0 ;
for (int i=1; i <=n ;i++) {
ll search3 = presum[i]- 3 , search2 = presum[i]-2;
if (idx.find(search3) != idx.end() && idx[search3] < i) {
int me_x= mex_subarray(idx[search3] +1, i) ;
if (me_x == 3) {
ans+=cnt[search3];
}
}
if (idx.find(search2) != idx.end() && idx[search2] < i) {
int me_x= mex_subarray( idx[search2]+1 ,i) ;
if (me_x == 2) {
ans+=cnt[search2];
}
}
}
cout << ans << endl ;
}
signed main() {
ios::sync_with_stdio(0);cin.tie(0);
//int t ; cin >> t; while(t--)
solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHNsOwp2ZWN0b3IgPGxsPiBhOwppbnQgbWV4X3N1YmFycmF5KCBpbnQgbCwgaW50IHIpIHsKICAgIHNldDxpbnQ+IHM7CiAgICBmb3IgKGludCBpID0gbC0xOyBpIDxyIDtpKyspCiAgICAgICAgcy5pbnNlcnQoYVtpXSk7CgogICAgaW50IG0gPSAwOwogICAgd2hpbGUgKHMuY291bnQobSkpCiAgICAgICAgbSsrOwogICAgcmV0dXJuIG07Cn0Kdm9pZCBzb2x2ZSgpewogICBpbnQgbiA7Y2luID4+IG4gOwogICAgYS5yZXNpemUobik7CiAgICB2ZWN0b3IgPGxsID5wcmVzdW0obisxKSA7CiAgICBtYXAgPGxsICxpbnQ+IGlkeCAsIGNudDsKICAgIGlkeFswXSA9MCA7CiAgICBmb3IgKGludCBpPTAgOyBpIDxuIDtpKyspIHsKICAgICAgICBjaW4gPj4gYVtpXSA7CiAgICAgICAgcHJlc3VtW2krMV0gPSBwcmVzdW1baV0gKyBhW2ldIDsKICAgICAgICBjbnRbcHJlc3VtW2krMV1dKysgOwogICAgICAgIGlmIChpZHguZmluZChwcmVzdW1baSsxXSkgPT0gaWR4LmVuZCgpKSBpZHhbcHJlc3VtW2krMV1dID0gaSsxOwogICAgfQogICAgaW50IGFucyA9IDAgOwogICAgZm9yIChpbnQgaT0xOyBpIDw9biA7aSsrKSB7CiAgICAgICAgbGwgc2VhcmNoMyA9IHByZXN1bVtpXS0gMyAsIHNlYXJjaDIgPSBwcmVzdW1baV0tMjsKICAgICAgICBpZiAoaWR4LmZpbmQoc2VhcmNoMykgIT0gaWR4LmVuZCgpICYmIGlkeFtzZWFyY2gzXSA8IGkpICB7CiAgICAgICAgICAgIGludCBtZV94PSBtZXhfc3ViYXJyYXkoaWR4W3NlYXJjaDNdICsxLCBpKSA7CiAgICAgICAgICAgIGlmIChtZV94ID09IDMpIHsKICAgICAgICAgICAgICAgIGFucys9Y250W3NlYXJjaDNdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChpZHguZmluZChzZWFyY2gyKSAhPSBpZHguZW5kKCkgJiYgaWR4W3NlYXJjaDJdIDwgaSkgewogICAgICAgICAgICBpbnQgbWVfeD0gbWV4X3N1YmFycmF5KCBpZHhbc2VhcmNoMl0rMSAsaSkgOwogICAgICAgICAgICBpZiAobWVfeCA9PSAyKSB7CiAgICAgICAgICAgICAgICBhbnMrPWNudFtzZWFyY2gyXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8IGVuZGwgOwp9CgoKCnNpZ25lZCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTsKICAgLy9pbnQgdCA7IGNpbiA+PiB0OyB3aGlsZSh0LS0pCiAgICAgICAgc29sdmUoKTsKICAgIHJldHVybiAwOwp9Cg==