#include<iostream>
#include<fstream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<string>
#include<queue>
#include<cstdlib>
#include<ctime>
#include<map>
#define in cin
#define out cout
using namespace std;
typedef long long ll;
int N,v[50],V[50],Ans;
map<int,int> Mapp;
void resu(int st,int dr,int t){
    if(st>dr){
        if(t!=0){
            if(t==-1) Mapp[0]++;
            else Mapp[t]++;
        }
        else{
            if(Mapp[0]) Ans+=Mapp[0];
        }
        return;
    }
    int n=dr-st+1;
    int K=1<<(n-1);
    for(int i=0;i<K;i++){
        for(int e=0;e<(n-1);e++) v[e] = ((i&(1<<e)) > 0);
        int k=V[st],s=0;
        for(int e=0;e<(n-1);e++){
            if(v[e]) k+=V[e+st+1];
            else s^=k,k=V[e+st+1];
        }
        s^=k;
        if(t!=0){
            if(t==-1) Mapp[s]++;
            else Mapp[s^t]++;
        }
        else{
            if(Mapp[s]) Ans+=Mapp[s];
        }
    }
}
int main(){
    in>>N;
    for(int i=1;i<=N;i++) in>>V[i];
    if(N<=0){
        int ans=0;
        int K=1<<(N-1);
        for(int i=0;i<K;i++){
            for(int e=0;e<(N-1);e++) v[e] = ((i&(1<<e)) > 0);
            int k=V[1],s=0;
            for(int e=0;e<(N-1);e++){
                if(v[e]) k+=V[e+2];
                else s^=k,k=V[e+2];
            }
            s^=k;
            if(!s) ans++;
        }
    }
    else{
        int M=N/2;
        for(int i=1;i<=M;i++){
            for(int j=M+1;j<=N;j++){
                int basic=0;
                for(int k=i;k<=j;k++) basic+=V[k];
                resu(1,i-1,basic);
                resu(j+1,N,0);
                Mapp.clear();
            }
        }
        resu(1,M,-1);
        resu(M+1,N,0);
        out<<Ans<<'\n';
    }
    return 0;
}