#include #include #include #include #include #include using mint=atcoder::modint998244353; using namespace std; using ll=long long; int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int n; cin>>n; string s; cin>>s; vector> dp1(2,vector(n+1)); vector dp2(n+1); dp1[0][0]=1; for(int i=0;i> ndp1(2,vector(n+1)); vector ndp2(n+1); if(s[i]!='0'){ for(int j=0;j=2)ndp1[1][j]+=dp1[1][j]; //(01)^mから if(j>=2&&j%2==0)ndp2[j]+=dp2[j]; else if(j>=2)ndp2[j+1]+=dp2[j]; } } if(s[i]!='1'){ for(int j=0;j=2)ndp1[0][j-1]+=dp1[1][j]; //(01)^mから if(j>=2&&j%2==0)ndp2[j+1]+=dp2[j]; else if(j>=2){ if(j==3)ndp1[0][1]+=dp2[j]; else ndp2[j-2]+=dp2[j]; } } } dp1=ndp1; dp2=ndp2; /* for(int i=0;i<=n;i++)cout<