#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define sz size()
#define all(a)  a.begin(), a.end()
#define allr(a) a.rbegin(), a.rend()
#define SL(n) scanf("%lld", &n)
#define fill(a, x) memset(a, x, sizeof(a));
#define mod 1000000007
#define eps 0.000000001

using namespace std;
typedef long long LL;
typedef vector <LL> VL;
typedef map <LL, LL> ML;
typedef pair<LL, LL> PL;
typedef vector <PL> VPL;

bool dbg = 0;

vector<int> a;
int N;
map<pair<int, int>, int> dp;

int Solve(int Xor, int Pos){
    //cout << Xor << " " << Pos << endl;
    if(Pos == N){
        if(Xor == 0){
            //cout << "   Entred" << endl;
        }
        return (Xor == 0);
    }
    else{
        if(dp.count(mp(Xor, Pos)) != 0){
            return dp[mp(Xor, Pos)];
        }
        LL Ans = 0;
        LL Sum = a[Pos];
        for(int n=Pos+1;n<=N;++n){
            //cout << n << " " << Sum << " " << (Xor ^ Sum) << endl;
            Ans += Solve(Xor ^ Sum, n);
            Sum += a[n];
        }
        return (dp[mp(Xor, Pos)] = Ans);
    }
}
int main() {
    int x;
    cin >> N;
    for(int n=0;n<N;++n){
        scanf("%d", &x);
        a.pb(x);
    }
    a.pb((int)0);
    int Ans = Solve(0, 0);
    cout << Ans << endl;
    return 0;
}