P8848
#include<bits/stdc++.h>
using namespace std;
const int mod=998244353;
int C(int a,int b){
int res=1;
for(int i=a;i>a-b;i--)res=1ll*res*i%mod;
for(int i=b;i;i--)res/=i;
return res;
}
vector<int> dp[10005];
int main(){
int n,cnt1=0,cnt2=0;
cin>>n;
for(int x,i=1;i<=n;i++)cin>>x,x==1?cnt1++:cnt2++;
if(cnt1<=cnt2)return cout<<C(cnt2+1,cnt1),0;
dp[0].push_back(1);
for(int i=0;i<=cnt1;i++){
for(int j=0;j<=cnt2;j++)
if(i>=j&&i-j<=cnt1-cnt2){
int tmp=0;
if(i)tmp+=dp[i-1][j];
if(j)tmp+=dp[i][j-1];
if(tmp)dp[i].push_back(tmp%mod);
}else dp[i].push_back(0);
}
return cout<<dp[cnt1][cnt2],0;
}