#include <bits/stdc++.h>
using namespace std;
long long f(int a[], int n){
	// if(n == 0){
	// 	return 0;
	// }
	if(n <= 16){
		long long x = 0;
		for (long long i = 0; i < (1 << (n - 1)); i++) {
			vector<int> bits;
			long long tmp = i;
			bits.push_back(0);
			for (int j = 0; j < n - 1; j++) {
			     if(tmp % 2 == 1) bits.push_back(1);
			     else bits.push_back(0);
			     tmp /= 2; 
			} 
			bits.push_back(0);
			reverse(bits.begin(), bits.end());
			long long txor = 0, sum = 0;
			for (int j = 1; j < bits.size(); j++) {
				if(bits[j] == 0){
					if(j <= bits.size() - 1) txor ^= (sum + a[j]);
					else txor ^= sum;
					sum = 0;
				}
				else{
					sum += a[j];
				}
			}
			if(txor == 0) {
				x++;
			}
		}
		return x;
	}
	map<long long, long long> left, right;
	left.clear(), right.clear();
	// for (int i = 1; i <= n / 2 + 1; i++) cout<<a[i]<<" left ";
	// cout<<endl; 
	// for (int i = n / 2 + 2; i <= n; i++) cout<<a[i]<<" right ";
	// cout<<endl; 
	for (long long i = 0; i < (1 << (n / 2)); i++) {
		long long tmp = i;
	 	vector<int> bits;
	 	bits.push_back(0);
		for (int j = 0; j < n / 2; j++) {
		     if(tmp % 2 == 1) bits.push_back(1);
		     else bits.push_back(0);
		     tmp /= 2; 
		} 
		bits.push_back(0);
		reverse(bits.begin(), bits.end());
		long long txor = 0, sum = 0;
		for (int j = 1; j < bits.size(); j++) {
			if(bits[j] == 0){
				if(j <= bits.size() - 1) txor ^= (sum + a[j]);
				else txor ^= sum;
				sum = 0;
			}
			else{
				sum += a[j];
			}
		}
		// cout<<txor<<" left ";
		left[txor]++;
	} 
	// cout<<endl;
	for (long long i = 0; i < (1 << (n - n / 2 - 2)); i++) {
		long long tmp = i;
	 	vector<int> bits;
	 	bits.push_back(0);
		for (int j = 0; j < (n - n / 2 - 2); j++) {
		     if(tmp % 2 == 1) bits.push_back(1);
		     else bits.push_back(0);
		     tmp /= 2; 
		} 
		bits.push_back(0);
		reverse(bits.begin(), bits.end());
		long long txor = 0, sum = 0;
		for (int j = 1; j < bits.size(); j++) {
			if(bits[j] == 0){
				if(j <= bits.size() - 1) txor ^= (sum + a[j + n / 2 + 1]);
				else txor ^= sum;
				sum = 0;
			}
			else{
				sum += a[j + n / 2 + 1];
			}
		}
		// cout<<txor<<" right ";
		right[txor]++;
	}
	// cout<<endl;
	long long ret = 0;
	map<long long, long long> :: iterator it = left.begin();
	while (it != left.end()){
	    ret += (it -> second) * right[it -> first];
	    it++;
	} 
	// cout<<ret<<" *** "<<n<<endl;
	int b[n];
	for (int i = 1; i <= n / 2; i++) b[i] = a[i];
	b[n / 2 + 1] = a[n / 2 + 2] + a[n / 2 + 1];
	for (int i = n / 2 + 3; i <= n; i++) b[i - 1] = a[i];
	// for (int i = 1; i <= n - 1; i++) cout<<b[i]<<" * ";
	// cout<<endl; 
	ret += f(b, n - 1);  
	return ret;
}
int main(){
	int n;
	cin>>n;
	int a[n + 1];
	for (int i = 1; i <= n; i++) cin>>a[i];
	cout<<f(a, n)<<endl;
}