#include <iostream> #include <cstdio> #include <cstdlib> #include <map> #include <algorithm> using namespace std; typedef long long ll; const int N = 40; ll a[N]; int n; map<ll, ll> b; ll ans = 0; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%lld", &a[i]); if (n == 1) { printf("0\n"); return 0; } int m = n / 2; for (int k = m; k <= n; k++) { b.clear(); ll add = 0; for (int i = m; i < k; i++) add += a[i]; for (int mask = 0; mask < (1 << (m - 1)); mask++) { ll val = 0; ll sum = 0; for (int i = 0; i < m - 1; i++) { sum += a[i]; if (((mask >> i) & 1) == 0) { val ^= sum; sum = 0; } } sum += a[m - 1] + add; val ^= sum; b[val] += 1; } if (k == n) { ans += b[0]; continue; } for (int mask = 0; mask < (1 << (n - k - 1)); mask++) { ll val = 0; ll sum = 0; for (int i = 0; i < n - k - 1; i++) { sum += a[k + i]; if (((mask >> i) & 1) == 0) { val ^= sum; sum = 0; } } sum += a[n - 1]; val ^= sum; ans += b[val]; } } printf("%lld\n", ans); return 0; }