#include <vector>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <list>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cassert>
#include <ctime>
#include <cctype>
#include <cstring>
#include <bitset>
#include <algorithm>
#include <iomanip>

#define ld long double
#define ll long long
#define ull unsigned long long
#define pb push_back
#define mp make_pair
#define fst first
#define snd second
#define y0 _y0
#define y1 _y1

using namespace std;

template < typename T > T abs(T x)
{
    return x > 0 ? x : -x;
}

template < typename T > T sqr(T x)
{
    return x * x;
}

map <int, ll> dp[40];
int a[40];

int main()
{
	int n;
	
	cin >> n;
	
	for (int i = 0; i < n; i++)
		cin >> a[i];
		
	dp[0][0] = 1;
	
	for (int i = 0; i < n; i++) {
		for (map <int, ll> :: iterator it = dp[i].begin(); it != dp[i].end(); it++) {
			int sum = 0;
			int xorvalue = (*it).fst;
			ll cnt = (*it).snd;
			
			for (int j = i; j < n; j++) {
				sum += a[j];
				dp[j + 1][xorvalue ^ sum] += cnt;
			}
		}
	}
	
	cout << dp[n][0] << "\n";
	
    return 0;   
}