#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; using mint=modint998244353; mint f[2000010], invf[2000010]; void fac(int n){ f[0]=1; for(ll i=1; i<=n; i++) f[i]=f[i-1]*i; invf[n]=f[n].inv(); for(ll i=n-1; i>=0; i--) invf[i]=invf[i+1]*(i+1); } mint comb(int x, int y){ if(!(0<=y && y<=x)) return 0; return f[x]*invf[y]*invf[x-y]; } mint fs[500050]; int main() { int n, k; cin>>n>>k; vector s(n), sr(n); mint ss=0, ss2=0; mint mp=1; for(int i=0; i>m; mp*=mint(m); s[i]=mint(m+1)/2; sr[n-1-i]=s[i]; ss+=s[i]; ss2+=s[i]*s[i]; } fac(n); mint ps=0; for(int i=1; i<=k; i++){ ps+=f[n-1]*invf[n-1-i]; } mint ans=(ss*ss-ss2)/2*ps; auto sp=convolution(s, sr); for(int i=0; i<=n; i++){ fs[i+1]=fs[i]+invf[i]; } for(int d=0; d