#include <bits/stdc++.h> #define LL long long #define PII pair<int,int> #define mp make_pair #define fi first #define se second using namespace std; int n,s[39],ps[39]; vector<int> V[39]; map<int,int> M[39]; LL ans=0; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&s[i]); ps[0]=0; for(int i=1;i<=n;i++) ps[i]=ps[i-1]+s[i]; //mid = n/2+1 V[0].push_back(0); for(int i=1;i<=n/2;i++){ for(int j=0;j<i;j++){ for(int k=0;k<V[j].size();k++){ V[i].push_back(V[j][k]^(ps[i]-ps[j])); } } } V[n+1].push_back(0); M[n+1][0]=1; for(int i=n;i>=n/2+2;i--){ for(int j=n+1;j>i;j--){ for(int k=0;k<V[j].size();k++){ V[i].push_back(V[j][k]^(ps[j-1]-ps[i-1])); } } for(int j=0;j<V[i].size();j++){ if(M[i].count(V[i][j])) M[i][V[i][j]]++; else M[i][V[i][j]]=1; } } for(int i=1;i<=n/2+1;i++){ for(int j=n/2+1;j<=n;j++){ for(int k=0;k<V[i-1].size();k++){ int cur=V[i-1][k]^(ps[j]-ps[i-1]); if(M[j+1].count(cur)) ans+=M[j+1][cur]; } } } printf("%lld\n",ans); return 0; }