#include <cstdio>
#include <map>
using namespace std;

int n, a[40];
map <int, int> Map;
long long ans;

void dfs(int k, int l, int x, int y) {
	if (k == l) {
		x ^= y;
		if (!Map.count(x)) Map[x] = 1;
		else Map[x] += 1;
	}else {
		if (k == 1)
			dfs(k + 1, l, x, a[1]);
		else {
			dfs(k + 1, l, x ^ y, a[k]);
			dfs(k + 1, l, x, y + a[k]);
		}
	}
}

void dfs1(int k, int x, int y) {
	if (k > n) {
		ans += Map[x ^ y];
	}else {
		dfs1(k + 1, x ^ y, a[k]);
		dfs1(k + 1, x, a[k] + y);
	}
}

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		scanf("%d", &a[i]);
	}
	int k = n / 2 + 1;
	for (int l = k; l; l--) {
		Map.clear();
		dfs(1, l, 0, 0);
		for (int r = k; r <= n; r++) {
			int sum = 0;
			for (int i = l; i <= r; i++)
				sum += a[i];
			if (r == n)
				ans += Map[sum];
			else
				dfs1(r + 2, sum, a[r + 1]);
		}
	}
	printf("%lld\n", ans);
}