#include <cstdlib> #include <cstdio> #include <algorithm> #include <vector> #include <queue> #include <cmath> #include <stack> #include <map> #include <set> #include <deque> #include <cstring> #include <functional> #include <climits> #include <list> #include <ctime> #include <complex> #define F1(x,y,z) for(int x=y;x<z;x++) #define F2(x,y,z) for(int x=y;x<=z;x++) #define F3(x,y,z) for(int x=y;x>z;x--) #define F4(x,y,z) for(int x=y;x>=z;x--) #define pb push_back #define LL long long #define co complex<double> #define MAX 105 #define AMAX 16384 #define MOD 1000000007 #define f(c,d) ((1<<(c))*(d)) using namespace std; int n,m,x[MAX],sx[MAX]; map<int,LL> y[MAX],z[MAX]; map<int,LL>::iterator it,ita; LL ans; int main(){ scanf("%d",&n); F1(a,0,n)scanf("%d",&x[a]); F1(a,0,n)sx[a+1]=sx[a]+x[a]; m=(n+1)/2; //printf("%d\n",m); y[0].insert(make_pair(0,1LL)); F2(a,1,m)F1(b,0,a)for(it=y[b].begin();it!=y[b].end();++it){ //printf(" %d\n",a); y[a][it->first^(sx[a]-sx[b])]+=it->second; } z[n].insert(make_pair(0,1LL)); F4(a,n-1,m)F3(b,n,a)for(it=z[b].begin();it!=z[b].end();++it){ //printf("%d\n",a); z[a][it->first^(sx[b]-sx[a])]+=it->second; } F2(a,0,m)F2(b,m,n)if(!((a==m)^(b==m)))for(it=y[a].begin();it!=y[a].end();++it)for(ita=z[b].begin();ita!=z[b].end();++ita){ //printf("%d %d %d %d\n",a,it->first,b,ita->first); if((it->first^ita->first^(sx[b]-sx[a]))==0){ //printf(" %d %d %d %d %lld %lld %d %d\n",a,it->first,b,ita->first,it->second,ita->second,sx[b]-sx[a],it->first^ita->first^(sx[b]-sx[a])); ans+=it->second*ita->second; } } printf("%lld\n",ans); //system("pause"); return 0; }