#yukicoder411F #入力受取 N,K=map(int,input().split()) MOD=998244353; rev=pow(N,MOD-2,MOD) #愚直なDP DP[i][x][y]: i回目のイベントが終わったとき、退場者がx人、イエロー累積がy人 #ただしこれだと爆発するので、DPとnDPの移し替え(iを引数として持たない)ことにする #MLE。xは増える方向にしか遷移しないので、同じDPテーブルを使い回すことにする。 DP=[[0]*(K+1) for _ in range(K+1)]; DP[0][0]=1 #k→k+1回目のイベントに遷移 for k in range(K): #現在の退場者でDPをループ for x in range(K,-1,-1): if x*2>K: continue y=k-2*x #現在の累積イエロー if y<0 or N0: DP[x+1][y-1]+=now*y%MOD*rev%MOD; DP[x+1][y-1]%=MOD DP[x][y]=0 #答えを出力 ans=0 for x in range(K+1): ans+=(N+x)*sum(DP[x][y] for y in range(K+1))%MOD; ans%=MOD print(ans)