#include<bits/stdc++.h> using namespace std; #include <fstream> #include <sstream> #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define INF INT_MAX/3 #define PB push_back #define MP make_pair #define ALL(a) (a).begin(),(a).end() #define SET(a,c) memset(a,c,sizeof a) #define VS vector<string> #define VI vector<int> #define DEBUG(x) cout<<#x<<": "<<x<<endl #define MIN(a,b) (a>b?b:a) #define MAX(a,b) (a>b?a:b) #define PI acos(-1.0) #define LL long long #define ULL unsigned long long #define EPS 1e-9 #define MOD 1000000007 #define xx first #define yy second #define PII pair<LL,LL> #define Mx 100010 // pos, xor val map<LL, int >dp[55]; LL ar[50]; int N; int a[50]; int k; int solve( int pos , LL xval ){ if(pos==N+1){ if(xval==0)return 1; return 0; } if(dp[pos].find(xval)!=dp[pos].end())return dp[pos][xval]; int ret = 0; LL cur = 0; for(int i = pos; i<=N;i++){ cur +=ar[i]; ret += solve(i+1, xval ^ cur ); } dp[pos][xval]=ret; return ret; } int main() { int ks,cas; int i,j,k,x,y; // scanf("%d",&ks); ks=1; rep(cas,1,ks){ FOR(i,0,40)dp[i].clear(); cin>>N; FOR(i,1,N+1)cin>>ar[i]; dp[N+1][0]=1; int ret = solve(1,0); cout<<ret<<endl; } return 0; }