#pragma comment(linker, "/STACK:640000000")

#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <list>
#include <vector>
#include <string>
#include <cstring>
#include <cmath>
#include <ctime>
#include <cassert>
#include <bitset>
 
using namespace std;
 
#define forn(i, n) for(int i = 0; i < (int)(n); i++)
#define forn1(i, n) for(int i = 1; i <= (int)(n); i++)
#define forr(i, l, r) for(int i = int(l); i <= int(r); i++)
#define all(a) (a).begin(), (a).end()
#define sz(a) (int)((a).size())
#define mp make_pair
#define pb push_back
#define x first
#define y second
#define y1 __y1
#define sqr(x) ((x) * (x))
 
typedef long long li;
typedef long double ld;
typedef pair<int, int> pt;
 
const int INF = (int)(1e9);
const li INF64 = (li)(INF) * (li)(INF);
const ld eps = 1e-9;
const ld pi = ld(3.1415926535897932384626433832795);
 
inline bool in(int i, int j, int n, int m) {
    return i >= 1 && i <= n && j >= 1 && j <= m;
}
 
inline int myrand() {
    return (rand() ^ (rand() << 15));
}
 
const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, 1, 0, -1};
 
const int N = 55;

int n, a[N];

inline void gen()
{
    return;
}

inline bool read()
{
	//gen(); return true;
	if(!(cin >> n)) return false;
	forn1(i, n) cin >> a[i];
    return true;
}

map<int, int> dp[N];

inline void solve()
{
	dp[0][0] = 1;
	forn(i, n)
	{
		for(map<int, int>::iterator it = dp[i].begin(); it != dp[i].end(); it++)
		{
			int val = it->x;
			int cur = it->y;
			int sum = 0;
			for(int ni = i + 1; ni <= n; ni++)
			{
				sum += a[ni];
				dp[ni][val ^ sum] += cur;
			}
		}
	}

	int ans = dp[n][0];
	cout << ans << endl;
	return;
}
 
int main() {
#ifdef _DEBUG
    assert(freopen("input.txt", "rt", stdin));
    assert(freopen("output.txt", "wt", stdout));
#endif
 
    cout << setprecision(2) << fixed;
    cerr << setprecision(10) << fixed;
 
    srand(int(time(NULL)));

    int T = 1;
    //assert(scanf("%d", &T) == 1);

    forn(i, T)
    {
       // cerr << "TEST == " << i + 1 << endl;
        assert(read());
        solve();
    }
 
#ifdef _DEBUG
    cerr << "TIME == " << clock() << " ms" << endl;
#endif
    return 0;
}