#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; }