#include<iostream>
#include<stdio.h>
#include<map>
using namespace std ;

#define MAXN 47

int n ;
int a[ MAXN ] ;

struct tuhla {
	int where ;
	int cur ;
};

bool operator < ( struct tuhla p1 , struct tuhla p2 ) {
	if ( p1.where != p2.where ) { return p1.where < p2.where ; }
	return p1.cur < p2.cur ;
}

map < struct tuhla , long long > dp ;

long long f ( int where , int cur ) {
	struct tuhla u ;
	u.where = where ;
	u.cur = cur ;
	if ( dp.find ( u ) != dp.end ( ) ) { return dp[ u ] ; }
	if ( where == n ) {
		return ( cur == 0 ) ;
	}
	long long ret = 0 ;
	int i ;
	int p = 0 ;
	for ( i = where + 1 ; i <= n ; i ++ ) {
		p += a[ i ] ;
		ret += f ( i , ( cur ^ p ) ) ;
	}
	dp[ u ] = ret ;
	return ret ;
}

void input ( ) {
	scanf ( "%d" , &n ) ;
	int i ;
	for ( i = 1 ; i <= n ; i ++ ) {
		scanf ( "%d" , &a[ i ] ) ;
	}
}

void solve ( ) {
	printf ( "%lld\n" , f ( 0 , 0 ) ) ;
}

int main ( ) {
	input ( ) ;
	solve ( ) ;
	return 0 ;
}