#include <iostream>
#include <algorithm>
using namespace std;

const int MAX = 200000;
int main() {
    // データ読み込み
    static int N, A[MAX];
    cin >> N; // n=10
    int res = 0;  // 答えを格納
    for (int i = 0; i < N; ++i) cin >> a[i];

    int64_t sum[N+1];
    sum[0] = 0;
    for (int i = 0; i < N; i++) // 部分配列の長さ size = 2
    {
        sum[i+1] = sum[i] + a[i];
    }
    sort(sum, sum + N + 1, greater<int>());  // ruiseki[0:N+1] を大きい順にソート
	int num = 1;
	for (int i = 1;i <= N;i ++) {
		if (sum[i] == sum[i - 1]) num ++; // 累積和が同値になるものの個数
		else {
			res += (int64_t)num * (num - 1) / 2; // 総和が0になる区間の数
			num = 1;
		}
	}
	res += (int64_t)num * (num - 1) / 2;
    cout << res << endl;
}

