#include <bits/stdc++.h>
// #include "testlib.h"
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std ;

#define ft first
#define sd second 
#define pb push_back
#define all(x) x.begin(),x.end() 
#define mp make_pair
#define ll long long int 
#define vi vector<int>
#define vii vector<pair<int,int> >
#define pii pair<int,int>
#define vl vector<ll>
#define vll vector<pair<ll,ll> >
#define pll pair<ll,ll>

#define sc1(x) scanf("%d",&x)
#define sc2(x,y) scanf("%d%d",&x,&y)
#define sc3(x,y,z) scanf("%d%d%d",&x,&y,&z)

#define scll1(x) scanf("%lld",&x)
#define scll2(x,y) scanf("%lld%lld",&x,&y)
#define scll3(x,y,z) scanf("%lld%lld%lld",&x,&y,&z)

#define pr1(x) printf("%d\n",x)
#define pr2(x,y) printf("%d %d\n",x,y)
#define pr3(x,y,z) printf("%d %d %d\n",x,y,z)

#define prll1(x) printf("%lld\n",x)
#define prll2(x,y) printf("%lld %lld\n",x,y)
#define prll3(x,y,z) printf("%lld %lld %lld\n",x,y,z)

#define pr_vec(v) for(int i=0;i<v.size();i++) cout << v[i] << " "

#define f_in(st) freopen(st,"r",stdin)
#define f_out(st) freopen(st,"w",stdout)

#define debug(s) cout << "check : " << s << endl
const int mod = 1000000000 + 7;
const int maxn = 100000 + 10;
const int maxm = 100000 + 10;
const int inv2 = 500000004;
const int inv6 = 166666668;

int main() {

	int n; sc1( n );
	vector<int> A(n+1);
	for(int i=1; i<=n; i++) sc1( A[i] );
	A[0] = 0;
	map<int, int> M[n+1];
	M[0][0] = 1;
	for(int i=1; i<=n; i++) {
		int sum = 0;
		for(int j=i; j>=1; j--) {
			sum += A[j];
			for(auto it = M[j-1].begin(); it != M[j-1].end(); ++it) {
				int result = sum ^ ( it->ft );
				M[i][result] += it->sd;
			}
		}	
	}
	cout << M[n][0] << "\n";
	return 0;
}