#include <bits/stdc++.h>

using namespace std;

typedef long long     LL;
typedef pair<int,int> pii;

double PI  = acos(-1);
double EPS = 1e-7;
int INF    = 1000000000;
LL INFLL   = 1000000000000000000LL;

#define fi            first
#define se            second
#define mp            make_pair
#define pb            push_back

#define input(in)     freopen(in,"r",stdin)
#define output(out)   freopen(out,"w",stdout)

#define MIN(a, b)     (a) = min((a), (b))
#define MAX(a, b)     (a) = max((a), (b))

#define RESET(a, b)   memset(a,b,sizeof(a))
#define ALL(a)        (a).begin(), (a).end()
#define SIZE(a)       (int)a.size()
#define SORT(a)       sort(ALL(a))
#define UNIQUE(a)     (a).erase( unique( ALL(a) ), (a).end() )
#define FOR(a, b, c)  for (int (a)=(b); (a)<=(c); (a)++)
#define FORD(a, b, c) for (int (a)=(b); (a)>=(c); (a)--)
#define FORIT(a, b)   for (__typeof((b).begin()) a=(b).begin(); a!=(b).end(); a++)

int mx[8] = {-1,1,0,0,-1,-1,1,1};
int my[8] = {0,0,-1,1,-1,1,-1,1};

// ----- //

int x[37];
long long pre[37];
long long sum[37];

map<long long, int> cnt1[100];
map<long long, int> cnt2[100]; 

long long get(int l, int r) {
  return sum[r]-sum[l-1];
}

int main() {
  int n;
  scanf("%d",&n);
  FOR(a,1,n) {
    scanf("%d", &x[a]);
    pre[a] = pre[a-1]^x[a];
    sum[a] = sum[a-1]+x[a];
  }
  pre[n+1] = pre[n];
  sum[n+1] = sum[n];
  int i = n/2;
  int j = n-i;
  int ans = 0;
  FOR(mask, 0, (1 << i)-1) {
    int ls = 0;
    long long nim = 0;
    int b = 1;
    FOR(a, 0, i) {
      if (mask & (1 << a)) {
       // cout << "hit " << ls+1 << " " << a+b << " " << get(ls+1, a+b) << endl;
        nim ^= get(ls+1, a+b);
        ls = a+b;
      }
    }
    cnt1[ls][nim]++;
    //cout << "fs " << ls << " " << nim << endl;
    //if (nim) ans++;
  }
  FOR(mask, 0, (1 << j)-1) {
    int ls = n+1;
    long long nim = 0;
    int b = i+1;
    FORD(a, j, 0) {
      if (mask & (1 << a)) {
       // cout << "hit " << a+b << " " << ls << " " << get(a+b, ls-1) << endl;
        nim ^= get(a+b, ls-1);
        ls = a+b;
      }
    }
    //cout << "se " << ls << " " << nim << endl;
    cnt2[ls][nim]++;
    //if (nim) ans++;
  }
  FOR(a,0,i) {
    FOR(b,i+2, n+1) {
      long long nim = sum[b-1]-sum[a];
      //cout << a << " " << b << " " << nim << endl;
      FORIT(it, cnt1[a]) {
        long long lol = nim^((*it).fi);
        long long ways1 = (*it).se;
        long long ways2 = cnt2[b][lol];
        //if (ways1*ways2 > 0) cout << "aa " << a << " " << b << endl;
        ans += (ways1*ways2);
      }
    }
  }
  cout << ans << endl;
}