#include using namespace std; const int mod=998244353; long long q[2005],qq[2005],qp[2005],vp[2005],ans,sum; int c[2005][2005]; int dp[2005],n,m,ss,tt,vx; string s; struct xxs{ int sum,op; }a[2005]; int main(){ // freopen("aspect.in","r",stdin); // freopen("aspect.out","w",stdout); cin>>n; cin>>s; s=' '+s; for(int i=1;i<=n;i++){ if(s[i]!=s[i-1]){ m++; a[m].sum=1; a[m].op=s[i]-'0'; } else a[m].sum++; } q[1]=1; for(int i=2;i<=n;i++){ q[i]=q[i-1]*1ll*i%mod; } for(int i=0;i<=n;i++) c[i][0]=1; for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ c[i][j]=c[i-1][j-1]+c[i-1][j]; c[i][j]%=mod; } } if(a[m].op==0){ dp[a[m].sum+1]=q[a[m].sum]; ss=a[m].sum; vx=a[m].sum; m--; } // dp[a[m-1].sum+1]=1; for(int i=m;i>=1;i-=2){ if(i==1){ ans=c[n][a[i].sum]*1ll*q[a[i].sum]%mod; for(int i=1;i<=n;i++){ if(dp[i]){ sum+=dp[i]; sum%=mod; } } if(sum!=0)ans=(ans*sum)%mod; cout<=a[i-1].sum+1;j--){ cout<