#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<math.h> #include<queue> #include<stack> #include<sstream> #include<stdio.h> #include<map> #include<set> #include<memory.h> #include<algorithm> #include<vector> using namespace std; typedef long long ll; ll gcd(ll a, ll b){ if (!b) return a; return gcd(b, a%b); } ll lcm(ll a, ll b){ return b / gcd(a, b)*a; } #define FOR(I,N) for(int(i)=0;i<int(N);++i) #define FORK(I,N,K) for(int(i)=0;i<int(N);i+=int(K)) const int N = 37; int n, a[N]; map<ll, ll>mp[N]; ll calc(int i, ll xr){ if (i == n) return !xr; map<ll, ll>::iterator it = mp[i].find(xr); if (it != mp[i].end()) return it->second; ll ret = 0; ll s = 0; for (int j = i; j < n; ++j){ s += a[j]; ret += calc(j + 1, xr ^ s); } return mp[i][xr] = ret; } int main(){ scanf("%d", &n); for (int i = 0; i < n; ++i) scanf("%d", &a[i]); printf("%lld\n", calc(0, 0)); }