#include <iostream> #include <vector> #include <algorithm> #include <cmath> #include <queue> #include <set> #include <cstdio> #include <cstdlib> #include <stack> #include <cstring> #include <iomanip> #include <map> using namespace std; int a[40],b[40]; map<int,long long> m00[40],m01[40],m10[40],m11[40]; int suff[40],pre[40]; void solve(int n) { for(int i = 0;i < n/2;i++) { cin>>a[i]; } int n2 = 0; for(int j = n/2;j < n;j++) { cin>>b[j - n/2]; n2++; } n = n/2; for(int i = 1;i <= n;i++) { suff[i] = suff[i - 1] + a[n - i]; } for(int i = 1;i <= n2;i++) { pre[i] = pre[i - 1] + b[i - 1]; } for(int m = 0;m < (1<<n);m++) { int x = 0; int c = a[0]; for(int i = 1;i < n;i++) { if(((m>>i) & 1) != ((m>>(i - 1)) & 1) ) { x = x ^ c; c = a[i]; } else { c+=a[i]; } } x = x ^ c; int cnt = 0; for(int i = n - 1;i >= 0;i--,cnt++) { if(((m>>i) & 1) != ((m>>(n - 1)) & 1)) break; } if((m>>(n - 1)) == 0) m00[cnt][x]++; else m01[cnt][x]++; } for(int m = 0;m < (1<<n2);m++) { int x = 0; int c = b[0]; for(int i = 1;i < n2;i++) { if(((m>>i) & 1) != ((m>>(i - 1)) & 1) ) { x = x ^ c; c = b[i]; } else { c+=b[i]; } } x = x ^ c; int cnt = 0; for(int i = 0;i < n2;i++,cnt++) { if(((m>>i) & 1) != (m & 1)) break; } if((m & 1) == 0) m10[cnt][x]++; else m11[cnt][x]++; } long long ans = 0; for(int i = 1;i <= n;i++) { for(int j = 1;j <= n2;j++) { for(map<int,long long>::iterator it = m00[i].begin();it != m00[i].end();it++) { ans+=it->second * m10[j][it->first ^ suff[i] ^ pre[j] ^ (pre[j] + suff[i])]; } for(map<int,long long>::iterator it = m01[i].begin();it != m01[i].end();it++) { ans+=it->second * m11[j][it->first ^ suff[i] ^ pre[j] ^ (pre[j] + suff[i])]; } for(map<int,long long>::iterator it = m00[i].begin();it != m00[i].end();it++) { ans+=it->second * m11[j][it->first]; } for(map<int,long long>::iterator it = m01[i].begin();it != m01[i].end();it++) { ans+=it->second * m10[j][it->first]; } } } cout<<ans/2<<endl; } int main() { int n; cin>>n; if(n > 1) { solve(n); return 0; } for(int i = 0;i < n;i++) { cin>>a[i]; } int ans = 0; for(int m = 0;m < (1<<n);m++) { int x = 0; int c = a[0]; for(int i = 1;i < n;i++) { if(((m>>i) & 1) != ((m>>(i - 1)) & 1) ) { x = x ^ c; c = a[i]; } else { c+=a[i]; } } x = x ^ c; if(!x) ans++; } cout<<ans/2<<endl; }