#include <vector>
#include <list>
#include <map>
#include <set>
#include <unordered_map>
#include <queue>
#include <stack>
#include <algorithm>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <limits>
#include <cstring>
#include <string>
using namespace std;

typedef pair<int,int> pairii;
typedef long long llong;

#define FOR(i,s,n) for (int (i) = (s); (i) < (n); (i)++)
#define FORZ(i,n) FOR((i),0,(n))
#define pb push_back

const int MAXN = 40;
int n,ar[MAXN];
unordered_map<int,llong> xr[MAXN];

void solve() {
  scanf("%d",&n);
  FORZ(i,n) scanf("%d",ar+i);
  xr[0][ar[0]]=1LL;
  FOR(i,1,n) {
    int sum=0;
    FORZ(j,i) {
      sum+=ar[i-j];
      for (auto& p:xr[i-j-1]) {
        xr[i][sum^p.first]+=p.second;
      }
    }
    xr[i][sum+ar[0]]++;
  }
  printf("%lld",xr[n-1][0]);
}

int main() {
#ifdef DEBUG
  freopen("in.txt", "r", stdin);
  freopen("out.txt", "w", stdout);
#endif
  solve();
  return 0;
}