//	Coded by:  samfisher
#include<bits/stdc++.h>
#define ll long long int
#define vii  vector<int>::iterator 
#define vli  vector<ll>::iterator 
#define vi  vector<int> 
#define vl  vector<ll> 
#define pb(x) push_back(x)
#define pf(x) push_front(x)
#define mp(x,y) make_pair(x,y)
#define MOD 1000000007
#define in cin>>
#define i2(x,y) cin>>x>>y
#define i3(x,y,z) cin>>x>>y>>z
#define os(x) cout<<x<<' '
#define on(x) cout<<x<<endl
#define o2(x,y) cout<<x<<' '<<y<<endl
#define o3(x,y,z) cout<<x<<' '<<y<<' '<<z<<endl
#define pn cout<<endl
#define F first
#define S second
#define for_it(it, X) for (__typeof((X).begin()) it = (X).begin(); it != (X).end(); it++)
#define op(X) cout<<X.F<<" "<<X.S<<" ";
#define opn(X) cout<<X.F<<" "<<X.S<<endl;
using namespace std;
map<int,int> L[40],R[40];
int cum[40]={0};
int main()
{
	ios_base::sync_with_stdio(false);
	int t,i,j,k,n,m,a,b,c;	
	in n;
	vi arr(n);
	for(i=0;i<n;i++)
	{
		in arr[i];
		cum[i]+=arr[i];
		cum[i+1]=cum[i];
	}
	m = n/2;
	L[0][arr[0]] = 1;
	// m=n;
	for(i=1;i<=m;i++)
	{
		c=0;
		for(j=i;j>0;j--)
		{
			c = c+arr[j];
			for_it(it,L[j-1])
			{
				L[i][c^((*it).F)] += (*it).S;
				// o3(i+1, (c^((*it).F) ) ,(*it).S );
			}
		}
		L[i][c+arr[0]] ++;
		// o3(i, c+arr[0], L[i][c+arr[0]]);
	}

	m=0;
	R[n-1][arr[n-1]] = 1;
	for(i=n-2;i>=m;i--)
	{
		c=0;
		for(j=i;j<n-1;j++)
		{
			c = c+arr[j];
			for_it(it,R[j+1])
			{
				R[i][c^((*it).F)] += (*it).S;
				// o3(i+1, (c^((*it).F) ) ,(*it).S );
			}
		}
		R[i][c+arr[n-1]] ++;
	}
	a=0;
	ll ans=0;
	for(i=0;i<=m;i++)
	{

		for(j=m;j<n;j++)
		{
			c = cum[j]-cum[i]+arr[i];
			if(i==0 && j ==n-1)
				continue;
			if( i!=0 && j!=n-1)
			{
				for_it(it,L[i-1])
				{
					a = ((*it).F) ^ c;
					b = ((*it).S);
					ans+=b*R[j+1][a];
				}
			}
			else
			{
				if(i==0)
					ans+=R[j+1][c];
				else
					ans+=L[i][c];
			}
		}
	}
	on(ans);
	// for_it(it,R[n-1])
	// {
		// o2((*it).F,(*it).S);
	// }

}