#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

int N;
ll val[40];

unordered_map<int, int> generate(int i, int j) {
    unordered_map<int, int> res;
    
    if(j < i) {
        res[0] = 1;
        return res;
    }
    
    int gaps = j - i;
    
    for (int m = 0; m < (1 << gaps); m++) {
        ll fin = 0, seq = val[i];
        
        for (int k = i+1; k <= j; k++) {
            if((m>>(k-i-1))&1) {
                fin ^= seq; 
                seq = val[k];
            } else {
                seq += val[k];
            }
        }
        
        res[fin^seq]++;
    }
    
    return res;
}

ll solve(int i, int j, ll sum) {    
    unordered_map<int, int> left = generate(0, i - 1), right = generate(j + 1, N - 1);
    
    ll ret = 0;
    
    for (auto p : left) {
        ret += p.second * right[p.first ^ sum];
    }
    
    return ret;
}

int main() {
    cin >> N;
    
    for (int i = 0; i < N; i++) 
        cin >> val[i];

    ll ans = 0;
    
    int mid = N / 2;
    
    for (int i = 0; i <= mid; i++) {

        ll sum = 0;
        for (int k = i; k < mid; k++) 
            sum += val[k];
        
        for (int j = mid; j < N; j++) {
            sum += val[j];
            ans += solve(i, j, sum);
        }
    }
    
    cout << ans << endl;
    return 0;
}