#include <bits/stdc++.h> using namespace std; typedef long long ll; #define NMAX 40 int a[NMAX]; int n; map<pair<int, pair<int, ll>>, int> dp; int solve(int i, int next_elem, ll xorsum) { if (i >= n) return xorsum == 0; if (dp.find(make_pair(i, make_pair(next_elem, xorsum))) != dp.end()) { //printf("memoized\n"); return dp[make_pair(i, make_pair(next_elem, xorsum))]; } int res = solve(i + 1, a[i + 1], xorsum ^ next_elem); if (i < n - 1) res += solve(i + 1, next_elem + a[i + 1], xorsum); return dp[make_pair(i, make_pair(next_elem, xorsum))] = res; } int main() { scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); dp.clear(); int res = solve(0, a[0], 0); printf("%d\n", res); return 0; }