#include<bits/stdc++.h>
#define ll long long
#define rg register
using namespace std;
const int MAXN=2010;
const int Mod=998244353;
char Str[MAXN];
int n,Ans,Seq[MAXN],Pre[MAXN],Dp[MAXN][MAXN],C[MAXN][MAXN];
inline void Add(rg int &A,rg int B){   A+=B,A-=A>=Mod?Mod:0;   }
int main()
{   scanf("%s",Str+1),n=strlen(Str+1);
	for(rg int i=0;i<=n;i++) C[i][0]=1;
	for(rg int i=1;i<=n;i++) Seq[i]=Str[i]-'0',Pre[i]=Pre[i-1]+Seq[i];
	for(rg int i=1;i<=n;i++)
		for(rg int j=1;j<=i;j++) C[i][j]=C[i-1][j],Add(C[i][j],C[i-1][j-1]);
	Dp[0][0]=1;
	for(rg int i=1;i<=n;i++)
		for(rg int j=0;j<=i;j++)
		{   if(Pre[i-1]+(Seq[i]!=0)>=j) Add(Dp[i][j],Dp[i-1][j-1]);
			if(2*i-2-Pre[i-1]+(Seq[i]<=1)>=i-j) Add(Dp[i][j],Dp[i-1][j]);
		}
	for(rg int i=0;i<=n;i++) Add(Ans,1ll*Dp[n][i]*C[n][Pre[n]-i]%Mod);
	printf("%d\n",Ans);
}
