#include<bits/stdc++.h>

using namespace std;
#include <fstream>
#include <sstream>

#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define INF INT_MAX/3
#define PB push_back
#define MP make_pair
#define ALL(a) (a).begin(),(a).end()
#define SET(a,c) memset(a,c,sizeof a)

#define VS vector<string>
#define VI vector<int>
#define DEBUG(x) cout<<#x<<": "<<x<<endl
#define MIN(a,b) (a>b?b:a)
#define MAX(a,b) (a>b?a:b)
#define PI acos(-1.0)

#define LL long long
#define ULL unsigned long long
#define EPS 1e-9
#define MOD 1000000007
#define xx first
#define yy second
#define PII pair<LL,LL>





#define Mx 100010

// pos, xor val
map<LL, int >dp[55];

LL ar[50];
int N;
int a[50];
int k;

int solve( int pos , LL xval ){

    if(pos==N+1){
        if(xval==0)return 1;
        return 0;

    }

    if(dp[pos].find(xval)!=dp[pos].end())return dp[pos][xval];
    int ret = 0;
    LL cur = 0;
    for(int i = pos; i<=N;i++){

        cur +=ar[i];

        ret += solve(i+1, xval ^ cur );
    }

    dp[pos][xval]=ret;
    return ret;

}

int main()
{
    int ks,cas;
    int i,j,k,x,y;
//    scanf("%d",&ks);
    ks=1;
    rep(cas,1,ks){
        FOR(i,0,40)dp[i].clear();
        cin>>N;
        FOR(i,1,N+1)cin>>ar[i];

        dp[N+1][0]=1;

        int ret = solve(1,0);
        cout<<ret<<endl;
    }
    return 0;
}