#include<stdio.h> #include<map> #include<vector> using namespace std; #define pp pair<int,int> map<pp,long long int> m1; vector<pp> G[40]; int main() { int n,i,j,k,a[40]={0},s=0; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } m1[pp(0,0)]=1LL; G[0].push_back(pp(0,0)); for(i=1;i<=n;i++) { s=0; for(j=i;j>0;j--) { s+=a[j]; int si=G[j-1].size(); for(k=0;k<si;k++) { int y=G[j-1][k].first; //int w=G[j-1][k].second; int z=y^s; if(m1[pp(z,i)]==0) { G[i].push_back(pp(z,i)); } m1[pp(z,i)]+=m1[pp(y,j-1)]; //printf("i=%d j=%d s=%d y=%d dp=%d ##=%d\n",i,j,s,y,m1[pp(z,i)],m1[pp(y,j-1)]); } } } printf("%lld\n",m1[pp(0,n)]); return 0; }