#include <bits/stdc++.h> #define F first #define S second using namespace std; typedef long long ll; ll solve(vector<int> a, vector<int> b){ map<int, ll> ss; int n1=a.size(); int n2=b.size(); for (int i=0;i<(1<<(n1-1));i++){ int x=0; int s=0; for (int j=0;j<n1;j++){ s+=a[j]; if ((i&(1<<j))==0){ x^=s; s=0; } } ss[x]++; } ll r=0; for (int i=0;i<(1<<(n2-1));i++){ int x=0; int s=0; for (int j=0;j<n2;j++){ s+=b[j]; if ((i&(1<<j))==0){ x^=s; s=0; } } r+=ss[x]; } return r; } ll get(vector<int> x){ int n=(int)x.size(); if (n==1){ if (x[0]==0) return 1; return 0; } int sp=n/2; vector<int> a; vector<int> b; for (int i=0;i<sp;i++){ a.push_back(x[i]); } for (int i=sp;i<n;i++){ b.push_back(x[i]); } ll v=solve(a, b); vector<int> xx; for (int i=0;i<sp-1;i++){ xx.push_back(x[i]); } xx.push_back(x[sp-1]+x[sp]); for (int i=sp+1;i<n;i++){ xx.push_back(x[i]); } v+=get(xx); return v; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin>>n; vector<int> x(n); for (int i=0;i<n;i++){ cin>>x[i]; } cout<<get(x)<<endl; }