#include <bits/stdc++.h>
using namespace std ;
int n , a[50] ;
map <int,vector<int> > half ;
set <int> ans ;
void search1(int x,int aa,int bb,int s){
if( x > n/2 ){
half[(aa-bb)].push_back(s) ;
return ;
}
search1(x+1,aa+a[x],bb,s|(1<<x));
search1(x+1,aa,bb+a[x],s|(1<<x));
search1(x+1,aa,bb,s);
return ;
}
void search2(int x,int aa,int bb,int s){
if( x >n ){
for (int y : half[(bb-aa)]){
ans.insert(y|s);
}
return ;
}
search2(x+1,aa,bb,s);
search2(x+1,aa+a[x],bb,s|(1<<x));
search2(x+1,aa,bb+a[x],s|(1<<x));
return ;
}
signed main(){
scanf("%d" , &n );
for( int i = 1 ; i <= n ; i ++ ){
scanf("%d" , &a[i] );
}
search1(1,0,0,0);
search2(n/2,0,0,0);
cout<<ans.size()<<endl;
return 0;
}