#include #include #include #include using namespace std; using mint=atcoder::modint998244353; struct dat{ vectorRR,RB,BR,BB; }; void add(vector&lhs,const vector&rhs) { if(lhs.size()&A,mint dp[LIM+1]) { int sz=LIM+1; while(sz>0&&dp[sz-1]==mint::raw(0))sz--; A=vector(dp,dp+sz); } dat solve(string S) { if(S.size()<=LIM) { int now=0; for(int j=0;j<2;j++)for(int k=0;k<2;k++) for(int i=0;i<=LIM;i++) dp[now][j][k][i]=mint::raw(0); dp[now][0][0][0]=dp[now][1][1][0]=mint::raw(1); for(char c:S) { int nxt=1-now; for(int j=0;j<2;j++)for(int k=0;k<2;k++) for(int i=0;i<=LIM;i++) dp[nxt][j][k][i]=dp[now][j][k][i]; int k=c=='R'?0:1; for(int j=0;j<2;j++) for(int i=0;i>N>>S; dat ret=solve(S); for(int i=1;i<=N;i++) { mint ans=0; if(ret.RR.size()>i)ans+=ret.RR[i]; if(ret.RB.size()>i)ans+=ret.RB[i]; if(ret.BR.size()>i)ans+=ret.BR[i]; if(ret.BB.size()>i)ans+=ret.BB[i]; cout<