#include #include using namespace std; using ll = long long; #define rep(i,n) for(int i=0;i<(int)(n);i++) using mint = atcoder::modint998244353; // combination MOD const int MOD=998244353; const int MAX_N=5e6; vector fac(MAX_N+1,1); vector finv(MAX_N+1,1); vector inv(MAX_N+1,1); void comb_setup(){ for(int i=2;i<=MAX_N;i++){ fac.at(i)=(fac.at(i-1)*i); inv.at(i)=MOD-(inv.at(MOD%i)*(MOD/i))%MOD; finv.at(i)=(finv.at(i-1)*inv.at(i)); } } mint comb(ll n,ll k){ if(n>n>>p; mint ans=fac.at(n); for(ll i=0;i*p<=n;i++){ mint tmp=comb(n,i*p); tmp*=fac.at(i*p); tmp*=finv.at(p).pow(i); tmp*=finv.at(i); tmp*=fac.at(p-1).pow(i); ans-=tmp; } cout<