#include <iostream>
#include <stdio.h>
#include <map>
using namespace std;
typedef long long Int;

int n;
int arr[51];
int psum[51];
int m;

map<int,int> prefixes[51];
map<int,int> suffixes[51];
map<int,int>::iterator myit,it2;

int main()
{
    //freopen("test.txt","r",stdin);

    int i,j;
    int sum;
    int L,R;
    int need;
    Int answer=0;

    scanf("%d",&n);

    m=n/2;

    psum[0]=0;
    for (i=1;i<=n;i++)
    {
        scanf("%d",&arr[i]);
        psum[i]=psum[i-1]+arr[i];
    }

    prefixes[0].insert(make_pair(0,1));
    for (i=1;i<=m;i++)
    {
        sum=arr[i];
        for (j=i-1;j>=0;j--)
        {
            for (myit=prefixes[j].begin();myit!=prefixes[j].end();myit++)
            {
                it2=prefixes[i].insert( make_pair( (sum^((*myit).first)),0  ) ).first;

                (*it2).second=(*it2).second+(*myit).second;
            }

            sum+=arr[j];
        }
    }

    suffixes[n+1].insert(make_pair(0,1));
    for (i=n;i>m;i--)
    {
        sum=arr[i];
        for (j=i+1;j<=n+1;j++)
        {
            for (myit=suffixes[j].begin();myit!=suffixes[j].end();myit++)
            {
                it2=suffixes[i].insert( make_pair( (sum^((*myit).first)),0 ) ).first;

                (*it2).second=(*it2).second+(*myit).second;
            }

            sum+=arr[j];
        }
    }

    for (myit=prefixes[m].begin();myit!=prefixes[m].end();myit++)
    {
        //cout<<"We can get prefix of "<<(*myit).first<<" in "<<(*myit).second<<" ways "<<endl;
        it2=suffixes[m+1].find( (*myit).first );

        if (it2!=suffixes[m+1].end())
        {
            //if ( (*it2).second>0 )
            //{
            //    cout<<"Adding "<<(*it2).second<<" initially"<<endl;
            //}
            answer+=(Int)( (*it2).second )*(Int)( (*myit).second );
        }
    }

    for (L=1;L<=m;L++)
    {
        for (R=m+1;R<=n;R++)
        {
            for (myit=prefixes[L-1].begin();myit!=prefixes[L-1].end();myit++)
            {
                need=( (psum[R]-psum[L-1])^( (*myit).first ) );

                it2=suffixes[R+1].find(need);

                if (it2!=suffixes[R+1].end())
                {
                    //if ( (*it2).second>0 )
                    //{
                    //    cout<<"Adding "<<(*it2).second<<" from "<<L<<"~"<<R<<endl;
                    //}
                    answer+=(Int)( (*it2).second ) * (Int)( (*myit).second );
                }
            }
        }
    }

    printf("%lld\n",answer);

    return 0;
}