#include<bits/stdc++.h> #define pb push_back #define mp make_pair using namespace std; map<long long, long long> m[36]; vector<long long> v[36]; int a[36]; long long ans, t; long long dsum; int main() { int N; cin >> N; for(int i = 0; i < N; i++) cin >> a[i]; m[0][a[0]] = 1; v[0].pb(a[0]); for(int i = 1; i < N; i++) { dsum = 0; for(int j = i; j > 0; j--) { dsum += a[j]; for(int k = 0; k < v[j-1].size(); k++) { if(m[i][dsum ^ v[j-1][k]] == 0) v[i].pb(dsum ^ v[j-1][k]); m[i][dsum ^ v[j-1][k]] += m[j-1][v[j-1][k]]; } } dsum += a[0]; m[i][dsum]++; if(m[i][dsum] == 1) v[i].pb(dsum); } /*for(int i = 0; i < N; i++) { for(int j = 0; j < v[i].size(); j++) cout << "(" << v[i][j] << ", " << m[i][v[i][j]] << ") "; cout << endl; }*/ cout << m[N-1][0] << endl; }