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