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