#define MD 998244353 ll@n++,@m; ll p[n]; rep(i,n)p[i]=i; rep(m){ ll@t,@a,o=p[a]; rep(t-1){ ll@b; (o,p[b])=(p[b],o); } p[a]=o; } mapy; rep(i,n){ if(p[i]>=0&&p[i]!=i){ ll j=i,a=0; while(p[j]>=0){ (p[j],j)=(-1,p[j]); ++a; } ll u[1d5],v[1d5]; REP(k,Factor(a,u,v)){ y[u[k]]>?=v[k]; } } } Mint z=1; for(auto w:y){ z*=Mint(w.first)**w.second; } wt(z);