#include <iostream>
#include <bits/stdc++.h>
using namespace std;
long long countStableSubarrays(vector<int>& capacity) {
int n = capacity.size();
vector<long long> prefix(n, 0);
prefix[0] = capacity[0];
for (int i = 1; i < n; i++) {
prefix[i] = prefix[i - 1] + capacity[i];
}
map<pair<long long, long long>, long long> mpp;
long long ans = 0;
for (int i = 0; i < n; i++) {
long long target = prefix[i] - (long long)2 * (long long)capacity[i];
if (mpp.find({target, capacity[i]}) != mpp.end()) {
ans = ans + mpp[{target, capacity[i]}];
}
if (i != 0 && capacity[i] == 0 && capacity[i] == capacity[i - 1]) {
ans = ans - 1;
}
mpp[{prefix[i], capacity[i]}]++;
}
return ans;
}
int main() {
int n;
cin >> n;
vector<int> capacity(n);
for (int i = 0; i < n; i++) {
cin >> capacity[i];
}
cout << countStableSubarrays(capacity);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxvbmcgbG9uZyBjb3VudFN0YWJsZVN1YmFycmF5cyh2ZWN0b3I8aW50PiYgY2FwYWNpdHkpIHsKICAgIGludCBuID0gY2FwYWNpdHkuc2l6ZSgpOwoKICAgIHZlY3Rvcjxsb25nIGxvbmc+IHByZWZpeChuLCAwKTsKICAgIHByZWZpeFswXSA9IGNhcGFjaXR5WzBdOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgcHJlZml4W2ldID0gcHJlZml4W2kgLSAxXSArIGNhcGFjaXR5W2ldOwogICAgfQoKICAgIG1hcDxwYWlyPGxvbmcgbG9uZywgbG9uZyBsb25nPiwgbG9uZyBsb25nPiBtcHA7CgogICAgbG9uZyBsb25nIGFucyA9IDA7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBsb25nIGxvbmcgdGFyZ2V0ID0gcHJlZml4W2ldIC0gKGxvbmcgbG9uZykyICogKGxvbmcgbG9uZyljYXBhY2l0eVtpXTsKCiAgICAgICAgaWYgKG1wcC5maW5kKHt0YXJnZXQsIGNhcGFjaXR5W2ldfSkgIT0gbXBwLmVuZCgpKSB7CiAgICAgICAgICAgIGFucyA9IGFucyArIG1wcFt7dGFyZ2V0LCBjYXBhY2l0eVtpXX1dOwogICAgICAgIH0KCiAgICAgICAgaWYgKGkgIT0gMCAmJiBjYXBhY2l0eVtpXSA9PSAwICYmIGNhcGFjaXR5W2ldID09IGNhcGFjaXR5W2kgLSAxXSkgewogICAgICAgICAgICBhbnMgPSBhbnMgLSAxOwogICAgICAgIH0KCiAgICAgICAgbXBwW3twcmVmaXhbaV0sIGNhcGFjaXR5W2ldfV0rKzsKICAgIH0KCiAgICByZXR1cm4gYW5zOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgY2luID4+IG47CgogICAgdmVjdG9yPGludD4gY2FwYWNpdHkobik7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gY2FwYWNpdHlbaV07CiAgICB9CgogICAgY291dCA8PCBjb3VudFN0YWJsZVN1YmFycmF5cyhjYXBhY2l0eSk7CgogICAgcmV0dXJuIDA7Cn0=