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



long long int p1[40];
long long int p2[40];
long long int vals[40];
map<long long int,int> m1;
map<long long int,int> m2;

void gen(int curr,int N,long long int p[],map<long long int,int>& m,long long int val){
	//cout<<curr<<" "<<val<<endl;
	if(curr == N){
		m[val] += 1;
		return;
	}
	long long int total = p[curr];
	gen(curr+1,N,p,m,val^total);
	for(int i=curr+1;i<N;i++){
		total += p[i];
		gen(i+1,N,p,m,val^total);
	}
}
int main(){
	int N;cin>>N;
	int M1 = N/2;
	int M2 = N-M1;
	for(int i=0;i<M1;i++) cin>>p1[i];
	for(int i=0;i<M2;i++) cin>>p2[i];
	for(int i=0;i<M1;i++) vals[i] = p1[i];
	for(int i=M1,j=0;i<N;i++,j++) vals[i] = p2[j];
	gen(0,M1,p1,m1,0);
	gen(0,M2,p2,m2,0);
	long long int total = 0;
	for(map<long long int,int>::iterator it = m1.begin();it!=m1.end();it++){
		total += (it->second)*(m2[(it->first)]);
	}
	for(int i=0;i<M1;i++){
		for(int j=M1;j<N;j++){
			m1.clear();m2.clear();
			gen(0,i,p1,m1,0);
			long long int t =0;
			for(int k=i;k<=j;k++) t += vals[k];
			gen((j-M1)+1,M2,p2,m2,t);
			for(map<long long int,int>::iterator it = m1.begin();it!=m1.end();it++){
				total += (it->second)*(m2[(it->first)]);
			}
		}
	}
	cout<<total<<endl;
}