#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;
}