#include <bits/stdc++.h> using namespace std; typedef long long ll; int N; ll val[40]; unordered_map<int, int> generate(int i, int j) { unordered_map<int, int> res; if(j < i) { res[0] = 1; return res; } int gaps = j - i; for (int m = 0; m < (1 << gaps); m++) { ll fin = 0, seq = val[i]; for (int k = i+1; k <= j; k++) { if((m>>(k-i-1))&1) { fin ^= seq; seq = val[k]; } else { seq += val[k]; } } res[fin^seq]++; } return res; } ll solve(int i, int j, ll sum) { unordered_map<int, int> left = generate(0, i - 1), right = generate(j + 1, N - 1); ll ret = 0; for (auto p : left) { ret += p.second * right[p.first ^ sum]; } return ret; } int main() { cin >> N; for (int i = 0; i < N; i++) cin >> val[i]; ll ans = 0; int mid = N / 2; for (int i = 0; i <= mid; i++) { ll sum = 0; for (int k = i; k < mid; k++) sum += val[k]; for (int j = mid; j < N; j++) { sum += val[j]; ans += solve(i, j, sum); } } cout << ans << endl; return 0; }