#include<bits/stdc++.h>
using namespace std;
long long n,b[1005],c[1005][1005],ans=1,s1,s0,sum;
long long p=1e9+7;
long long fen(int a,int x){
if(x==0)return 1;
if(x==1)return a;
long long k;
k=fen(a,x/2);
k%=p;
k*=k;
k%=p;
if(x%2==1)return (k*a)%p;
return k%p;
}
int main(){
freopen("01.in","r",stdin);
freopen("01.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++){
cin>>b[i];
if(b[i]){
s1++;
}else{
s0++;
}
}
if(n-(2*s0)<0){
long long k=fen(2,-(n-(2*s0)));
ans=(fen(2,n*s0)%p)*fen(1+fen(k,p-2),n);
}else{
ans=(fen(2,n*s0)%p)*fen(1+fen(2,n-(2*s0)),n);
}
ans%=p;
cout<<ans;
return 0;
}