#include <bits/stdc++.h>
#define F first
#define S second
using namespace std;
typedef long long ll;

ll solve(vector<int> a, vector<int> b){
	map<int, ll> ss;
	int n1=a.size();
	int n2=b.size();
	
	for (int i=0;i<(1<<(n1-1));i++){
		int x=0;
		int s=0;
		for (int j=0;j<n1;j++){
			s+=a[j];
			if ((i&(1<<j))==0){
				x^=s;
				s=0;
			}
		}
		ss[x]++;
	}
	
	ll r=0;
	
	for (int i=0;i<(1<<(n2-1));i++){
		int x=0;
		int s=0;
		for (int j=0;j<n2;j++){
			s+=b[j];
			if ((i&(1<<j))==0){
				x^=s;
				s=0;
			}
		}
		r+=ss[x];
	}
	return r;
}

ll get(vector<int> x){
	int n=(int)x.size();
	if (n==1){
		if (x[0]==0) return 1;
		return 0;
	}
	int sp=n/2;
	vector<int> a;
	vector<int> b;
	for (int i=0;i<sp;i++){
		a.push_back(x[i]);
	}
	for (int i=sp;i<n;i++){
		b.push_back(x[i]);
	}
	ll v=solve(a, b);
	
	vector<int> xx;
	for (int i=0;i<sp-1;i++){
		xx.push_back(x[i]);
	}
	xx.push_back(x[sp-1]+x[sp]);
	for (int i=sp+1;i<n;i++){
		xx.push_back(x[i]);
	}
	v+=get(xx);
	return v;
}

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int n;
	cin>>n;
	vector<int> x(n);
	for (int i=0;i<n;i++){
		cin>>x[i];
	}
	cout<<get(x)<<endl;
}