var cnt:array[-10000000..10000000] of integer;
dp:array[0..1000000] of integer;
currNum, N, i:integer;
ans:int64;
begin
read(N);
for i := 0 to N - 1 do begin
read(currNum);
if (i <> 0) then dp[i] := dp[i - 1];
dp[i] := dp[i] + currNum;
ans := ans + cnt[dp[i] + 1];
ans := ans + cnt[dp[i] - 1];
if (dp[i] = -1) or (dp[i] = 1) then ans := ans + 1;
cnt[dp[i]] := cnt[dp[i]] + 1;
end;
writeln(ans);
end.
dmFyIGNudDphcnJheVstMTAwMDAwMDAuLjEwMDAwMDAwXSBvZiBpbnRlZ2VyOwogICAgZHA6YXJyYXlbMC4uMTAwMDAwMF0gb2YgaW50ZWdlcjsKICAgIGN1cnJOdW0sIE4sIGk6aW50ZWdlcjsKICAgIGFuczppbnQ2NDsKYmVnaW4KICByZWFkKE4pOwogIGZvciBpIDo9IDAgdG8gTiAtIDEgZG8gYmVnaW4KICAgIHJlYWQoY3Vyck51bSk7CiAgICBpZiAoaSA8PiAwKSB0aGVuIGRwW2ldIDo9IGRwW2kgLSAxXTsKICAgIGRwW2ldIDo9IGRwW2ldICsgY3Vyck51bTsKICAgIGFucyA6PSBhbnMgKyBjbnRbZHBbaV0gKyAxXTsKICAgIGFucyA6PSBhbnMgKyBjbnRbZHBbaV0gLSAxXTsKICAgIGlmIChkcFtpXSA9IC0xKSBvciAoZHBbaV0gPSAxKSB0aGVuIGFucyA6PSBhbnMgKyAxOwogICAgY250W2RwW2ldXSA6PSBjbnRbZHBbaV1dICsgMTsKICBlbmQ7CiAgd3JpdGVsbihhbnMpOwplbmQu