#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 ; }