from math import factorial

from itertools import accumulate





def combination(n, r):  # n個からr個選ぶ場合の数

    if n < r:

        return 0

    else:

        return factorial(n)//(factorial(r) * factorial(n-r))





N = int(eval(input()))

A = [int(i) for i in input().split()]

ans = 0

cumsum = sorted(list(accumulate(A)))

now = None

cnt = 1

for a in cumsum:

    if now is None:

        now = a

    elif now == a:

        cnt += 1

    else:

        ans += combination(cnt, 2)

        cnt = 1

        now = a

ans += combination(cnt, 2)

ans += cumsum.count(0)

print(ans)

#

# 　　  ⋀_⋀　 

#　　  (･ω･)  

# .／ Ｕ ∽ Ｕ＼

#  │＊　合　＊│

#  │＊　格　＊│ 

#  │＊　祈　＊│ 

#  │＊　願　＊│ 

#  │＊　　　＊│ 

#      ￣

#

import sys

sys.setrecursionlimit(10**6)

input=sys.stdin.readline

from math import floor,sqrt,factorial,hypot,log #log2ないｙｐ

from heapq import heappop, heappush, heappushpop

from collections import Counter,defaultdict,deque

from itertools import accumulate,permutations,combinations,product,combinations_with_replacement

from bisect import bisect_left,bisect_right

from copy import deepcopy

from fractions import gcd

from random import randint

def ceil(a,b): return (a+b-1)//b

inf=float('inf')

mod = 10**9+7

def pprint(*A): 

    for a in A:     print(*a,sep='\n')

def INT_(n): return int(n)-1

def MI(): return map(int,input().split())

def MF(): return map(float, input().split())

def MI_(): return map(INT_,input().split())

def LI(): return list(MI())

def LI_(): return [int(x) - 1 for x in input().split()]

def LF(): return list(MF())

def LIN(n:int): return [I() for _ in range(n)]

def LLIN(n: int): return [LI() for _ in range(n)]

def LLIN_(n: int): return [LI_() for _ in range(n)]

def LLI(): return [list(map(int, l.split() )) for l in input()]

def I(): return int(input())

def F(): return float(input())

def ST(): return input().replace('\n', '')

def main():

    N=I()

    A=LI()

    *cumsum, = accumulate(A)

    C=Counter(cumsum)

    ans = C[0]

    for v,c in C.items():

        ans += c*(c-1)//2

    print(ans)

if __name__ == '__main__':

    main()

from math import factorial
from itertools import accumulate


def combination(n, r):  # n個からr個選ぶ場合の数
    if n < r:
        return 0
    else:
        return factorial(n) // (factorial(r) * factorial(n - r))


N = int(eval(input()))
A = [int(i) for i in input().split()]
ans = 0
cumsum = sorted(list(accumulate(A)))
now = None
cnt = 1
for a in cumsum:
    if now is None:
        now = a
    elif now == a:
        cnt += 1
    else:
        ans += combination(cnt, 2)
        cnt = 1
        now = a
ans += combination(cnt, 2)
ans += cumsum.count(0)
print(ans)

#
# 　　  ⋀_⋀
# 　　  (･ω･)
# .／ Ｕ ∽ Ｕ＼
#  │＊　合　＊│
#  │＊　格　＊│
#  │＊　祈　＊│
#  │＊　願　＊│
#  │＊　　　＊│
#      ￣
#
import sys

sys.setrecursionlimit(10**6)
input = sys.stdin.readline
from math import floor, sqrt, factorial, hypot, log  # log2ないｙｐ
from heapq import heappop, heappush, heappushpop
from collections import Counter, defaultdict, deque
from itertools import (
    accumulate,
    permutations,
    combinations,
    product,
    combinations_with_replacement,
)
from bisect import bisect_left, bisect_right
from copy import deepcopy
from fractions import gcd
from random import randint


def ceil(a, b):
    return (a + b - 1) // b


inf = float("inf")
mod = 10**9 + 7


def pprint(*A):
    for a in A:
        print(*a, sep="\n")


def INT_(n):
    return int(n) - 1


def MI():
    return map(int, input().split())


def MF():
    return map(float, input().split())


def MI_():
    return map(INT_, input().split())


def LI():
    return list(MI())


def LI_():
    return [int(x) - 1 for x in input().split()]


def LF():
    return list(MF())


def LIN(n: int):
    return [I() for _ in range(n)]


def LLIN(n: int):
    return [LI() for _ in range(n)]


def LLIN_(n: int):
    return [LI_() for _ in range(n)]


def LLI():
    return [list(map(int, l.split())) for l in input()]


def I():
    return int(input())


def F():
    return float(input())


def ST():
    return input().replace("\n", "")


def main():
    N = I()
    A = LI()
    (*cumsum,) = accumulate(A)
    C = Counter(cumsum)
    ans = C[0]
    for v, c in C.items():
        ans += c * (c - 1) // 2
    print(ans)


if __name__ == "__main__":
    main()

-from math import factorial -from itertools import accumulate +# +# 　　  ⋀_⋀ +# 　　  (･ω･) +# .／ Ｕ ∽ Ｕ＼ +#  │＊　合　＊│ +#  │＊　格　＊│ +#  │＊　祈　＊│ +#  │＊　願　＊│ +#  │＊　　　＊│ +#      ￣ +# +import sys + +sys.setrecursionlimit(10**6) +input = sys.stdin.readline +from math import floor, sqrt, factorial, hypot, log  # log2ないｙｐ +from heapq import heappop, heappush, heappushpop +from collections import Counter, defaultdict, deque +from itertools import ( +    accumulate, +    permutations, +    combinations, +    product, +    combinations_with_replacement, +) +from bisect import bisect_left, bisect_right +from copy import deepcopy +from fractions import gcd +from random import randint -def combination(n, r):  # n個からr個選ぶ場合の数 -    if n < r: -        return 0 -    else: -        return factorial(n) // (factorial(r) * factorial(n - r)) +def ceil(a, b): +    return (a + b - 1) // b -N = int(eval(input())) -A = [int(i) for i in input().split()] -ans = 0 -cumsum = sorted(list(accumulate(A))) -now = None -cnt = 1 -for a in cumsum: -    if now is None: -        now = a -    elif now == a: -        cnt += 1 -    else: -        ans += combination(cnt, 2) -        cnt = 1 -        now = a -ans += combination(cnt, 2) -ans += cumsum.count(0) -print(ans) +inf = float("inf") +mod = 10**9 + 7 + + +def pprint(*A): +    for a in A: +        print(*a, sep="\n") + + +def INT_(n): +    return int(n) - 1 + + +def MI(): +    return map(int, input().split()) + + +def MF(): +    return map(float, input().split()) + + +def MI_(): +    return map(INT_, input().split()) + + +def LI(): +    return list(MI()) + + +def LI_(): +    return [int(x) - 1 for x in input().split()] + + +def LF(): +    return list(MF()) + + +def LIN(n: int): +    return [I() for _ in range(n)] + + +def LLIN(n: int): +    return [LI() for _ in range(n)] + + +def LLIN_(n: int): +    return [LI_() for _ in range(n)] + + +def LLI(): +    return [list(map(int, l.split())) for l in input()] + + +def I(): +    return int(input()) + + +def F(): +    return float(input()) + + +def ST(): +    return input().replace("\n", "") + + +def main(): +    N = I() +    A = LI() +    (*cumsum,) = accumulate(A) +    C = Counter(cumsum) +    ans = C[0] +    for v, c in C.items(): +        ans += c * (c - 1) // 2 +    print(ans) + + +if __name__ == "__main__": +    main()