#include <bits/stdc++.h> #define pb push_back #define mp make_pair #define ff first #define ss second #define sz size() #define all(a) a.begin(), a.end() #define allr(a) a.rbegin(), a.rend() #define SL(n) scanf("%lld", &n) #define fill(a, x) memset(a, x, sizeof(a)); #define mod 1000000007 #define eps 0.000000001 using namespace std; typedef long long LL; typedef vector <LL> VL; typedef map <LL, LL> ML; typedef pair<LL, LL> PL; typedef vector <PL> VPL; bool dbg = 0; vector<int> a; int N; map<pair<int, int>, int> dp; int Solve(int Xor, int Pos){ //cout << Xor << " " << Pos << endl; if(Pos == N){ if(Xor == 0){ //cout << " Entred" << endl; } return (Xor == 0); } else{ if(dp.count(mp(Xor, Pos)) != 0){ return dp[mp(Xor, Pos)]; } LL Ans = 0; LL Sum = a[Pos]; for(int n=Pos+1;n<=N;++n){ //cout << n << " " << Sum << " " << (Xor ^ Sum) << endl; Ans += Solve(Xor ^ Sum, n); Sum += a[n]; } return (dp[mp(Xor, Pos)] = Ans); } } int main() { int x; cin >> N; for(int n=0;n<N;++n){ scanf("%d", &x); a.pb(x); } a.pb((int)0); int Ans = Solve(0, 0); cout << Ans << endl; return 0; }