#include <iostream>
#include <map>
using namespace std;
int n, input[42], lB, rB, ans;
map < int, int > l[42], r[42];

void getL () {
    for ( int i = 1 ; i <= n ; i ++ ) {
        int cSum = input[i];
        for ( int s = i-1 ; s >= 0 ; s -- ) {

            for ( map < int , int > :: iterator it = l[s].begin() ; it != l[s].end() ; it ++ ) {

                l[i][ (it->first) ^ cSum ] += ( it->second ) ;

            }
            cSum += input[s];

        }

    }
}

void getR () {
    for ( int i = n ; i >= rB ; i -- ) {
        int cSum = input[i];
        for ( int s = i+1 ; s <= n+1 ; s ++ ) {

            for ( map < int , int > :: iterator it = r[s].begin() ; it != r[s].end() ; it ++ ) {

                r[i][ (it->first) ^ cSum ] += ( it->second ) ;

            }
            cSum += input[s];

        }

    }
}



int main () {
    cin >> n;
    for ( int i = 1 ; i <= n ; i ++ ) {
        cin >> input[i];
    }
    lB = n/2;
    rB = lB+1;

    l[0][0] = 1;
    r[n+1][0] = 1;

    getL();
    getR();

//    for ( map< int, int >::iterator it = l[n].begin(); it != l[n].end() ;it++ ) {
//        cout << (it->first) << " -> " << (it->second) << "\n";
//    }

    cout << l[n][0] << "\n";
    /*
    for ( int l1 = 1 ; l1 <= lB ; l1 ++ ) {
        for ( int r1 = n ; r1 >= l1 ; r1 -- ) { /// asdsad
            int cSum = 0;
            for ( int i = l1 ; i <= r1 ; i ++ ) { cSum += input[i]; }

            for ( map< int, int >::iterator it = l[l1-1].begin(); it != l[l1-1].end() ;it++ ) {

                ans += (it->second)*r[r1+1][ (it->first)^cSum ];

            }

        }
    }
    cout << ans << "\n";
    */
    return 0;
}