#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[100005];
int ans1[1000005],p1;
int ans2[1000005],p2;
int n;
void dfs1(int step,int cnt){
if(step==n/2+1){
ans1[++p1]=cnt;
return;
}
dfs1(step+1,cnt);
dfs1(step+1,cnt+a[step]);
dfs1(step+1,cnt-a[step]);
}
void dfs2(int step,int cnt){
if(step==n+1){
ans2[++p2]=cnt;
return;
}
dfs2(step+1,cnt);
dfs2(step+1,cnt+a[step]);
dfs2(step+1,cnt-a[step]);
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
dfs1(1,0);
dfs2(n/2+1,0);
int ans=0;
// sort(ans1+1,ans1+p1+1);
sort(ans2+1,ans2+p2+1);
// for(int i=1;i<=p1;i++){
// cout<<ans1[i]<<" ";
// }
// cout<<endl;
// for(int i=1;i<=p2;i++){
// cout<<ans2[i]<<" ";
// }
// cout<<endl;
for(int i=1;i<=p1;i++){
int l=lower_bound(ans2+1,ans2+p2+1,-ans1[i])-ans2;
int r=upper_bound(ans2+1,ans2+p2+1,-ans1[i])-ans2;
ans+=r-l;
}
cout<<(ans-1)/2;//解集为空会选一次,其他的解会算两次
return 0;
}
/*
20
30
4
36
14
20
18
6
26
40
14
28
10
30
38
20
20
18
36
32
22
*/