問題文

非負整数の集合 ss に対し、 mex(s){\rm mex}(s) を「 ss に含まれない最小の非負整数」として定義します。

00 以上 KK 未満の整数からなる長さ NN の数列 A1,A2,,ANA_1,A_2,\cdots,A_N として考えられるものは KNK^N 通りありますが、この全てに対する次の操作を行った後の ansans の総和を 998244353998244353 で割った余りを求めてください。

  1. まず、集合 SS を用意する。これは最初空である。また、整数 i,ansi,ans を用意する。これは最初それぞれ 1,01,0 である。
  2. SSAiA_i が含まれないなら、 SSAiA_iを追加する。
  3. ansansmex(S){\rm mex}(S) を加算し、 ii11 を加算する。
  4. もし i>Ni>N なら操作を終了する。そうでなければ、操作2に戻る。

制約

  • 入力は全て整数
  • 1K1051\leq K\leq 10^5
  • 1N9×1081\leq N\leq 9×10^8

入力

N K

出力

答えを出力してください。

サンプル

入力1
3 2
出力1
27

数列 AA としてありうるものは、 (0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,0,0),(1,0,1),(1,1,0),(1,1,1)(0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,0,0),(1,0,1),(1,1,0),(1,1,1)88 通りです。

1,2,31,2,3 回目の操作3で加算される数の総和はそれぞれ 4,10,134,10,13 であるため、答えは 2727 となります。

入力1
900000000 100000
出力1
872760129

998244353998244353 で割った余りを出力してください。

Submit


Go (1.21)