#include<bits/stdc++.h>
#define f1(i, n) for(int i=1;i<=n;++i)
#define f0(i, n) for(int i=0;i<n;++i)
#define ull unsigned long long
#define ll long long
#define rev(a) reverse(a.begin(),a.end())
#define all(x) x.begin(),x.end()
#define so(A, n) sort(A+1, A+n+1)
using namespace std;
const int maxn = 1e7 + 1;
ll T[maxn];
map<ll, ll> tru, mp;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
ll x;
cin >> n;
mp[0] = 1;
f1(i, n) {
cin >> x;
T[i] = T[i - 1] + x;
mp[T[i]]++;
if (T[i] == T[i - 1]) {
tru[T[i]]++;
}
}
int cnt = 0;
for (auto it : mp) {
cnt += (it.second * (it.second - 1) / 2) - tru[it.first];
}
cout << cnt;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBmMShpLCBuKSBmb3IoaW50IGk9MTtpPD1uOysraSkKI2RlZmluZSBmMChpLCBuKSBmb3IoaW50IGk9MDtpPG47KytpKQojZGVmaW5lIHVsbCB1bnNpZ25lZCBsb25nIGxvbmcKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSByZXYoYSkgcmV2ZXJzZShhLmJlZ2luKCksYS5lbmQoKSkKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLHguZW5kKCkKI2RlZmluZSBzbyhBLCBuKSBzb3J0KEErMSwgQStuKzEpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBtYXhuID0gMWU3ICsgMTsKbGwgVFttYXhuXTsKbWFwPGxsLCBsbD4gdHJ1LCBtcDsKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgaW50IG47CiAgICBsbCB4OwogICAgY2luID4+IG47CiAgICBtcFswXSA9IDE7CiAgICBmMShpLCBuKSB7CiAgICAgICAgY2luID4+IHg7CiAgICAgICAgVFtpXSA9IFRbaSAtIDFdICsgeDsKICAgICAgICBtcFtUW2ldXSsrOwogICAgICAgIGlmIChUW2ldID09IFRbaSAtIDFdKSB7CiAgICAgICAgICAgIHRydVtUW2ldXSsrOwogICAgICAgIH0KICAgIH0KICAgIGludCBjbnQgPSAwOwogICAgZm9yIChhdXRvIGl0IDogbXApIHsKICAgICAgICBjbnQgKz0gKGl0LnNlY29uZCAqIChpdC5zZWNvbmQgLSAxKSAvIDIpIC0gdHJ1W2l0LmZpcnN0XTsKICAgIH0KICAgIGNvdXQgPDwgY250OwogICAgcmV0dXJuIDA7CgoKfQo=