#include using namespace std; #define rep(i,s) for(int (i)=0;i<(s);i++) #define rep2(i,s,n) for(int (i)=(s);i<(n);i++) using vi=vector; using ll=long long; using vl=vector; using vvi=vector; using vvl=vector; #define all(v) v.begin(),v.end() #define eb(a) emplace_back(a) #define em(a) emplace(a) ll N,K; ll fac[20000010],finv[20000010],inv[20000010]; constexpr int mod=998244353; ll modpow(ll a,ll p){ if(p==0)return 1; return modpow(a*a%mod,p/2)*(p%2==1?a:1)%mod; } #define com(n,k) (fac[(n)]*finv[(k)]%mod)*finv[(n-k)]%mod int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout<>N>>K; fac[0]=fac[1]=1; finv[0]=finv[1]=1; inv[1]=1; rep2(i,2,20000010){ fac[i]=fac[i-1]*i%mod; inv[i]=mod-inv[mod%i]*(mod/i)%mod; finv[i]=finv[i-1]*inv[i]%mod; } int sign=1; if(N&1)sign*=-1; ll ans=0; rep(i,N+1){ ll add=com(N,i)*sign*modpow(i,N+K)%mod+mod; ans=(ans+add)%mod; sign*=-1; } ans=ans*fac[K]%mod; ans=ans*finv[N+K]%mod; ans=ans*modpow(inv[N],K)%mod; cout<