#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;
}