#include <iostream>
#include <vector>
#include <map>
using namespace std;
typedef long long ll;

vector< map <ll, ll> > ways(40);
int N;
vector<ll> A;

void build(ll hash, int curr, int last, int name) {
	if (curr == last) {
		ways[name][hash]++;
		return;
	}
	// try taking this number as-is
	ll newHash = hash ^ A[curr];
	build(newHash, curr+1, last, name);
	// now try doing a sum
	if (curr < last - 1) {
		A[curr+1] += A[curr];
		build(hash, curr+1, last, name);
		A[curr+1] -= A[curr];
	}
}

int main(){
	cin >> N;
	A = vector<ll>(N,0);
	for (int i = 0; i < N; i++) cin >> A[i];
	for (int i = 0; i <= N/2; i++)
		build(0,0,i,i);
	for (int i = N/2 + 1; i <= N; i++)
		build(0,i,N,i);
	ll total = 0;

	for (int leftIndex = 0; leftIndex <= N/2; leftIndex++)
		for (int rightIndex = N/2 + 1; rightIndex <= N; rightIndex++) {
			ll sum = 0;
			for (int i = leftIndex; i < rightIndex; i++) sum += A[i];
			for (auto X : ways[leftIndex]) {
				ll hash = X.first;
				ll res = X.second;
				hash ^= sum;
				res *= ways[rightIndex][hash];
				total += res;
			}
		}


	cout << total << endl;
	return 0;
}