#include <bits/stdc++.h> using namespace std; #define PB push_back #define MP make_pair #define SZ size() #define all(v) v.begin(), v.end() #define REP(i, n) for(int i = 0; i < (int)n; i++) #define ITR(i, j, n) for(int i = j; i < (int)n; i++) #define mem(array, val) memset(array, val, sizeof(array)) #define READ(filename) freopen(filename, "r", stdin) #define WRITE(filename) freopen(filename, "w", stdout) #define Pii pair <int, int> #define Fr first #define Sc second #define Long long long #define si(a) scanf("%d", &a) #define sl(a) scanf("%lld", &a) #define sd(a) scanf("%lf", &a) #define sii(a, b) scanf("%d%d", &a, &b) #define sll(a, b) scanf("%lld%lld", &a, &b) #define sdd(a, b) scanf("%lf%lf", &a, &b) #define Fast_IO ios_base::sync_with_stdio(0);cin.tie(0) #define MAX 37 int N, A[MAX]; map <Long, Long> dp[MAX]; Long solve(int pos, Long val) { if(pos >= N) return (val) ? 0 : 1; if(dp[pos].find(val) != dp[pos].end()) return dp[pos][val]; Long ans = 0, sum = 0; ITR(i, pos, N) { sum += A[i]; ans += solve(i+1, val ^ sum); } //printf("dp[%d][%lld]: %lld\n", pos, val, ans); dp[pos][val] = ans; return ans; } int main() { si(N); REP(i, N) si(A[i]); printf("%lld\n", solve(0, 0)); }