#include<bits/stdc++.h>

using namespace std;

#define sd(x) scanf("%d",&x)
#define slld(x) scanf("%lld",&x)
#define LL long long
#define LD long double
#define PB push_back
#define MP make_pair
#define F first
#define S second
#define Fill(a, b) memset(a, b, sizeof(a))
#define INF 2000000009

typedef pair<int,int> PII;
typedef vector<int> VI;

#define N 38

LL ar[N],sum[N];

map<LL,LL> mp[N];
vector<LL> vec[N];

void solve()
{
    int n,m;
    LL xr,sm=0,ans=0,val;
    sd(n);
    sum[0] = 0;
    for(int i=1;i<=n;i++)
    {
        slld(ar[i]);
        sum[i] = sum[i-1] + ar[i];
    }
    sum[n+1] = sum[n];
    m=n/2;
    vec[0].PB(0);
    vec[n+1].PB(0);
    mp[0][0] = 1;
    mp[n+1][0] = 1;
    //cout<<m<<endl;
    for(int i=1;i<=m;i++)
    {
        xr = ar[i];
        for(int j=i-1;j>=0;j--)
        {
            for(int k=0;k<vec[j].size();k++)
            {
                val = vec[j][k]^xr;
                if(mp[i][val] == 0)
                {
                    vec[i].PB(val);
                }
                mp[i][val] += mp[j][vec[j][k]];
                //cout<<i<<" "<<xr<<" "<<val<<endl;
            }
            xr = (xr+ar[j]);
        }
    }
    //cout<<endl;
    for(int i=n;i>m;i--)
    {
        xr = ar[i];
        for(int j=i+1;j<=n+1;j++)
        {
            for(int k=0;k<vec[j].size();k++)
            {
                val = vec[j][k]^xr;
                if(mp[i][val] == 0)
                {
                    vec[i].PB(val);
                }
                mp[i][val] += mp[j][vec[j][k]];
                //cout<<i<<" "<<xr<<" "<<val<<endl;
            }
            xr = (xr+ar[j]);
        }
    }
    //cout<<endl;
    for(int i=0;i<m;i++)
    {
        for(int j=m;j<=n;j++)
        {
            //if(i==m && j==m)continue;
            sm = sum[j] - sum[i];
            //cout<<i<<" "<<j<<" "<<sm<<endl;
            for(int k=0;k<vec[i].size();k++)
            {
                val = sm^vec[i][k];
                ans += (mp[i][vec[i][k]] * mp[j+1][val]);
                //cout<<ans<<" "<<mp[i][vec[i][k]]<<endl;
            }
        }
    }
    printf("%lld\n",ans);




}

int main()
{
	int t=1;
	//scanf("%d",&t);
	for(int i=1;i<=t;i++)
	{
		solve();
	}
}