// Coded by: samfisher #include<bits/stdc++.h> #define ll long long int #define vii vector<int>::iterator #define vli vector<ll>::iterator #define vi vector<int> #define vl vector<ll> #define pb(x) push_back(x) #define pf(x) push_front(x) #define mp(x,y) make_pair(x,y) #define MOD 1000000007 #define in cin>> #define i2(x,y) cin>>x>>y #define i3(x,y,z) cin>>x>>y>>z #define os(x) cout<<x<<' ' #define on(x) cout<<x<<endl #define o2(x,y) cout<<x<<' '<<y<<endl #define o3(x,y,z) cout<<x<<' '<<y<<' '<<z<<endl #define pn cout<<endl #define F first #define S second #define for_it(it, X) for (__typeof((X).begin()) it = (X).begin(); it != (X).end(); it++) #define op(X) cout<<X.F<<" "<<X.S<<" "; #define opn(X) cout<<X.F<<" "<<X.S<<endl; using namespace std; map<int,int> L[40],R[40]; int cum[40]={0}; int main() { ios_base::sync_with_stdio(false); int t,i,j,k,n,m,a,b,c; in n; vi arr(n); for(i=0;i<n;i++) { in arr[i]; cum[i]+=arr[i]; cum[i+1]=cum[i]; } m = n/2; L[0][arr[0]] = 1; // m=n; for(i=1;i<=m;i++) { c=0; for(j=i;j>0;j--) { c = c+arr[j]; for_it(it,L[j-1]) { L[i][c^((*it).F)] += (*it).S; // o3(i+1, (c^((*it).F) ) ,(*it).S ); } } L[i][c+arr[0]] ++; // o3(i, c+arr[0], L[i][c+arr[0]]); } m=0; R[n-1][arr[n-1]] = 1; for(i=n-2;i>=m;i--) { c=0; for(j=i;j<n-1;j++) { c = c+arr[j]; for_it(it,R[j+1]) { R[i][c^((*it).F)] += (*it).S; // o3(i+1, (c^((*it).F) ) ,(*it).S ); } } R[i][c+arr[n-1]] ++; } a=0; ll ans=0; for(i=0;i<=m;i++) { for(j=m;j<n;j++) { c = cum[j]-cum[i]+arr[i]; if(i==0 && j ==n-1) continue; if( i!=0 && j!=n-1) { for_it(it,L[i-1]) { a = ((*it).F) ^ c; b = ((*it).S); ans+=b*R[j+1][a]; } } else { if(i==0) ans+=R[j+1][c]; else ans+=L[i][c]; } } } on(ans); // for_it(it,R[n-1]) // { // o2((*it).F,(*it).S); // } }