#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; }