#include <bits/stdc++.h>
using namespace std;
int a[21],ans,n,visit[214514],l=0,t1=1,t2=1;
map<int,vector<int>> mp;
map<pair<int,int>,bool> vis;
vector<int> zhi;
int x,y;
void dfs1(int k,int ti)
{
if(k==n/2) {
mp[x+a[k]-y].push_back(ti);
mp[x-a[k]-y].push_back(ti);
mp[x-y].push_back(++t1);
return;
}
x+=a[k];
dfs1(k+1,ti);
x-=a[k];
y+=a[k];
dfs1(k+1,ti);
y-=a[k];
dfs1(k+1,++t1);
return;
}
void dfs2(int k,int ti)
{
if(k==n) {
zhi=mp[y-x-a[k]];
for(auto i:zhi)
if(vis[make_pair(i,ti)]=0) {
vis[make_pair(i,ti)]=1;
ans++;
}
zhi=mp[y-x+a[k]];
for(auto i:zhi)
if(vis[make_pair(i,ti)]=0) {
vis[make_pair(i,ti)]=1;
ans++;
}
ans+=mp[y-x].size();
return;
}
x+=a[k];
dfs2(k+1,ti);
x-=a[k];
y+=a[k];
dfs2(k+1,ti);
y-=a[k];
dfs2(k+1,t2++);
return;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
x=0;
y=0;
dfs1(1,1);
x=0;
y=0;
dfs2(n/2+1,1);
cout<<ans;
return 0;
}