#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <cmath>
#include <iostream>
#include <set>
#include <fstream>
#include <string>
#include <vector>
#include <unordered_map>

using namespace std;
#define FOR(i,s,e) for (int i=(s); i<(e); i++)
#define FOE(i,s,e) for (int i=(s); i<=(e); i++)
#define FOD(i,s,e) for (int i=(s); i>=(e); i--)
#define LL long long
#define eps 1e-9
#define pi acos(-1.0)
#define fail {printf("Impossible\n"); return 0;}
LL max(LL a,LL b){if (a>b){return a;} else {return b;}}
LL min(LL a,LL b){if (a<b){return a;} else {return b;}}


int n;
LL a[40];

LL s[40];

unordered_map<LL, int> pre[20], suf[50];

void gen(int id, LL sum, LL xx){
    if (id >= n / 2) return;
    sum += a[id];
    if (pre[id].count(sum ^ xx) == 0) pre[id].insert({sum ^ xx, 1}); else pre[id][sum^xx]++;
    gen(id + 1, sum, xx);
    gen(id + 1, 0, sum ^ xx);
}

void gen2(int id, LL sum, LL xx){
    if (id <= n / 2) return;
    sum += a[id];
    if (suf[id].count(sum ^ xx) == 0) suf[id].insert({sum ^ xx, 1}); else suf[id][sum^xx]++;
    gen2(id - 1, sum, xx);
    gen2(id - 1, 0, sum ^ xx);
}

LL cnt = 0;

int main(){
   // freopen("out.txt", "r", stdin);
    scanf("%d", &n);
    FOE(i, 1, n) scanf("%lld", &a[i]);

    s[0] = 0;
    FOE(i, 1, n) s[i] = s[i - 1] + a[i];

    gen(1, 0, 0);
    gen2(n, 0, 0);
    FOE(i, 1, n / 2) FOE(j, n / 2, n){
        LL su = s[j] - s[i - 1];
        if (i != 1) for (unordered_map<LL, int>::iterator it = pre[i - 1].begin(); it != pre[i - 1].end(); ++it){
            LL sy = it->first;
            sy ^= su;
            if (j != n) {
                unordered_map<LL, int>::iterator it2 = suf[j + 1].find(sy);
                if (it2 != suf[j + 1].end()){
                    cnt += (LL)it2->second * (LL)(it->second);
                }
            }
            else if (sy == 0) cnt += it->second;
            } else {


                if (j != n){
                unordered_map<LL, int>::iterator it2 = suf[j + 1].find(su);
                if (it2 != suf[j + 1].end()){
                    cnt += (LL)it2->second ;
                }}
                else if (su == 0) cnt++;
            }

    }
    cout<<cnt<<endl;
    return 0;
}