// // #include<bits/stdc++.h>
// // using namespace std;

// // const int N = 25010;

// // struct str{
// //     int left, right;
// // };

// // int cmp(str x, str y){
// //     return x.left < y.left;
// // }

// // int main(){
// //     str in[N];
// //     int n, T;
// //     scanf("%d%d", &n, &T);
// //     for(int i = 0 ; i < n; i++){
// //         scanf("%d%d", &in[i].left, &in[i].right);
// //     }
// //     sort(in, in + n, cmp);

// //     int R = 0, j = 0, ret = 0;
// //     for(int i = 0; i < n; i++){
// //         j = i;
// //         int mx = 0;
// //         while(j < n && in[j].left <= R + 1){
// //             mx = max(mx, in[j].right);
// //             j++;
// //         }

// //         if(mx <= R){
// //             break;
// //         }
// //         ret++;
// //         R = mx;
// //         if(R >= T){
// //             break;
// //         }
// //     }
// //     printf("%d\n", ret);
// //     return 0;
// // }

// // #include <iostream>
// // #include <cstdio>
// // #include <algorithm>
// // #include <cmath>
// // using namespace std;

// // struct note{
// // 	double l,r;
// // }a[1005];

// // bool cmp(note x,note y){
// // 	return x.r<y.r;
// // }

// // int main(){
// // 	int Case = 1;
// // 	int n, d, x, y, ans = 0, flag = 0;
// // 	double s;
// // 	while(scanf("%d%d",&n,&d) == 2){
// // 		flag = 0;
// // 		if(n == 0 && d == 0)    break;
// // 		for(int i = 1; i <= n; i++){
// // 			scanf("%d%d", &x, &y);
// // 			if(y > d || y < (-d)){
// // 				flag = 1;
// // 			}
// // 			if(flag == 0){
// // 				a[i].l = x - sqrt(1.0*d*d - y*y);
// // 				a[i].r = x + sqrt(1.0*d*d - y*y);
// // 			}
// // 		}
// // 		if(flag == 0){
// // 			sort(a+1, a+n+1, cmp);
// // 			ans=0;
// // 			s = -(1<<30);
// // 			for(int i = 1; i <= n; i++){
// // 				if(a[i].l > s){
// // 					ans++;
// // 					s = a[i].r;
// // 				}
// // 			}
// // 		}
// // 		printf("Case %d: ", Case);
// // 		Case++;
// // 		if(flag)
// // 			printf("-1\n");
// // 		else
// // 			printf("%d\n", ans); 
// // 	}
// // 	return 0;
// // }

// #include <iostream>
// #include <string> 
// using namespace std; 

// int n;
// char s[2010]; 

// void solve(){
//     int start = 0, end = n - 1,count = 0;
//     while(start <= end){   // 将从左起和从右起的字符串比较
// 		bool flag = false;
// 		for(int i = 0; i <= end - start; i++){  // 字符串的开头与结尾相同，则继续比较下一个
// 			if(s[start+i] < s[end-i]){
// 			   flag = true;
// 			   count++;
// 			   break;
// 			}else if(s[start+i] > s[end-i]){
// 				flag = false;
// 				count++;
// 				break;
// 			}
// 		}
// 		if(flag)	cout << s[start++];
// 		else cout << s[end--];
// 		if(count % 80 == 0)        printf("\n");
// 	}
// 	printf("\n");
// }

// int main(void){
//     scanf("%d", &n);
// 	for(int i = 0; i < n; i++)
// 		cin >> s[i];
// 	solve();   
//     return 0;
// }

#include<cstdio>
using namespace std;

int n, a[200010];

int main(){
    scanf("%d", &n);
    for(int i = 1; i <= n; i++){
        scanf("%d", &a[i]);
    }
    int j = 1;
    long long suma = 0, sumb = 0, ret = 0;
    for(int i = 1; i <= n; i++){
        while(j-1 <= n && suma == sumb){
            suma ^= a[j], sumb += a[j];
            j++;
        }
        suma ^= a[j-1], sumb -= a[j-1];
        suma ^= a[i], sumb -= a[i];
        ret += j - i - 1;
        j--;
    }
    printf("%lld\n", ret);
    return 0;
}