#include<bits/stdc++.h>
using namespace std;
long long v,v1,v2,m=998244353,f[2][10005];
long long qpow(long long a,long long b)
{
long long ans=1;
for(;b;b>>=1,a=a*a%m)
if(b&1)
ans=ans*a%m;
return ans;
}
long long C(long long a,long long b)
{
long long s=1;
for(long long i=a-b+1;i<=a;i++)
{
s*=i;
s%=m;
}
for(long long i=1;i<=b;i++)
{
s*=qpow(i,m-2);
s%=m;
}
return s;
}
int main()
{
long long n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>v;
if(v==1)
v1++;
else
v2++;
}
if(v1<=v2)
cout<<C(v2+1,v1);
else
{
f[0][0]=1;
for(long long i=1;i<=n;i++)
{
for(long long j=0;j<=v1-v2;j++)
{
f[i%2][j]=f[1-i%2][j+1]%m;
if(j)
f[i%2][j]+=f[1-i%2][j-1];
}
}
cout<<f[n%2][v1-v2];
}
return 0;
}