#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を引数として持たない)ことにする DP=[[0]*(K+1) for _ in range(K+1)]; DP[0][0]=1 #k→k+1回目のイベントに遷移 for k in range(K): nDP=[[0]*(K+1) for _ in range(K+1)] #現在の退場者でDPをループ for x in range(K+1): if x*2>K: continue y=k-2*x #現在の累積イエロー if y<0 or N0: nDP[x+1][y-1]+=DP[x][y]*y%MOD*rev%MOD; nDP[x+1][y-1]%=MOD DP=nDP #答えを出力 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)