#include #include #include #include #include #include using namespace std; using mint=atcoder::modint998244353; mint op(mint a,mint b){return a+b;} mint e(){return mint(0);} mint mp(mint f,mint x){return f*x;} mint id(){return mint(1);} mint comb[17][17],pM[3<<17]; mint ratio[17][17]; int N,M,C[3<<17]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N>>M; pM[0]=1; for(int i=0;i>C[i]; if(C[i]==0)left++; } for(int i=0;i<=M;i++) { comb[i][0]=comb[i][i]=1; for(int j=1;j >seg(M+1); for(int k=0;k<=M;k++)seg[k]=atcoder::lazy_segtree(N); int right=0; vectordlm; dlm.push_back(N); mint ans=0; for(int r=1;r<=M;r++)for(int k=0;k<=r;k++)ratio[r][k]=comb[r-1][k]/comb[r][k]; for(int l=N-1;l>=0;l--) { for(int k=0;k<=M;k++)seg[k].set(l,comb[M][k]*pM[right]); if(C[l]==0) { for(int k=0;k<=M;k++)seg[k].apply(l,N,mint::raw(M-k)); right++; left--; } else { int p=l,r=M; for(auto it=dlm.begin();r>0&&it!=dlm.end();it++) { int q=*it; for(int k=0;k<=r;k++)seg[k].apply(p,q,ratio[r][k]); r--; p=q; if(p