#include <bits/stdc++.h> using namespace std; long long f(int a[], int n){ // if(n == 0){ // return 0; // } if(n <= 16){ long long x = 0; for (long long i = 0; i < (1 << (n - 1)); i++) { vector<int> bits; long long tmp = i; bits.push_back(0); for (int j = 0; j < n - 1; j++) { if(tmp % 2 == 1) bits.push_back(1); else bits.push_back(0); tmp /= 2; } bits.push_back(0); reverse(bits.begin(), bits.end()); long long txor = 0, sum = 0; for (int j = 1; j < bits.size(); j++) { if(bits[j] == 0){ if(j <= bits.size() - 1) txor ^= (sum + a[j]); else txor ^= sum; sum = 0; } else{ sum += a[j]; } } if(txor == 0) { x++; } } return x; } map<long long, long long> left, right; left.clear(), right.clear(); // for (int i = 1; i <= n / 2 + 1; i++) cout<<a[i]<<" left "; // cout<<endl; // for (int i = n / 2 + 2; i <= n; i++) cout<<a[i]<<" right "; // cout<<endl; for (long long i = 0; i < (1 << (n / 2)); i++) { long long tmp = i; vector<int> bits; bits.push_back(0); for (int j = 0; j < n / 2; j++) { if(tmp % 2 == 1) bits.push_back(1); else bits.push_back(0); tmp /= 2; } bits.push_back(0); reverse(bits.begin(), bits.end()); long long txor = 0, sum = 0; for (int j = 1; j < bits.size(); j++) { if(bits[j] == 0){ if(j <= bits.size() - 1) txor ^= (sum + a[j]); else txor ^= sum; sum = 0; } else{ sum += a[j]; } } // cout<<txor<<" left "; left[txor]++; } // cout<<endl; for (long long i = 0; i < (1 << (n - n / 2 - 2)); i++) { long long tmp = i; vector<int> bits; bits.push_back(0); for (int j = 0; j < (n - n / 2 - 2); j++) { if(tmp % 2 == 1) bits.push_back(1); else bits.push_back(0); tmp /= 2; } bits.push_back(0); reverse(bits.begin(), bits.end()); long long txor = 0, sum = 0; for (int j = 1; j < bits.size(); j++) { if(bits[j] == 0){ if(j <= bits.size() - 1) txor ^= (sum + a[j + n / 2 + 1]); else txor ^= sum; sum = 0; } else{ sum += a[j + n / 2 + 1]; } } // cout<<txor<<" right "; right[txor]++; } // cout<<endl; long long ret = 0; map<long long, long long> :: iterator it = left.begin(); while (it != left.end()){ ret += (it -> second) * right[it -> first]; it++; } // cout<<ret<<" *** "<<n<<endl; int b[n]; for (int i = 1; i <= n / 2; i++) b[i] = a[i]; b[n / 2 + 1] = a[n / 2 + 2] + a[n / 2 + 1]; for (int i = n / 2 + 3; i <= n; i++) b[i - 1] = a[i]; // for (int i = 1; i <= n - 1; i++) cout<<b[i]<<" * "; // cout<<endl; ret += f(b, n - 1); return ret; } int main(){ int n; cin>>n; int a[n + 1]; for (int i = 1; i <= n; i++) cin>>a[i]; cout<<f(a, n)<<endl; }