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