atcoder#ARC146F. [ARC146F] Simple Solitaire

[ARC146F] Simple Solitaire

配点 : 12001200

問題文

(1,2,,N)(1,2,\dots,N) の順列 PP を用意して、次の操作を行います。

NN 枚のカードがあります。これらのカードには 11 から NN の番号がついてます。カード ii には PiP_i が書かれています。

整数 X=1X=1 があります。はじめ PCT 君は何も持っていません。PCT 君は以下の操作を i=1,2,,Ni=1,2,\dots,N の順で行います。

  • カード ii を手に入れる。その後、XX が書かれたカードを持っている限り以下の行動を繰り返す。
  • XX の書かれているカードを食べ、XX11 増やす。
  • 現在持っているカードの枚数が MM 枚以上の場合、持っているカードを全て捨てて操作を終了する。これ以降も操作は行わない。

ここで、以下のように順列 PP のスコアを定義します。

  • カードが捨てられて操作が終わった場合、PP のスコアを 00 とする。
  • カードが捨てられずに操作が最後まで行われた場合、PP のスコアを i=1N1\prod_{i=1}^{N-1} (i(i 回目の操作終了時に PCT 君が持っているカードの枚数 )) とする。

PP としてあり得るものは N!N! 通りありますが、そのすべてに対してスコアの総和を 998244353998244353 で割ったあまりを出力してください。

制約

  • 2N2×1052 \le N \le 2 \times 10^5
  • 2MN2 \le M \le N
  • 入力は全て整数である。

入力

入力は以下の形式で標準入力から与えられる。

NN MM

出力

答えを出力せよ。

3 2
1

P=(3,1,2)P=(3,1,2) の場合、以下のように操作が行われます。

  • 11 回目の操作- PCT 君がカード 11 を手に入れる。
    • 現在持っているカードの枚数は 11 枚なので、操作を続行する。
  • PCT 君がカード 11 を手に入れる。
  • 現在持っているカードの枚数は 11 枚なので、操作を続行する。
  • 22 回目の操作- PCT 君がカード 22 を手に入れる。
    • カード 22 を食べ、XX22 にする。
    • 現在持っているカードの枚数は 11 枚なので、操作を続行する。
  • PCT 君がカード 22 を手に入れる。
  • カード 22 を食べ、XX22 にする。
  • 現在持っているカードの枚数は 11 枚なので、操作を続行する。
  • 33 回目の操作- PCT 君がカード 33 を手に入れる。
    • カード 1,31,3 を食べ、XX44 にする。
    • 現在持っているカードの枚数は 00 枚なので、操作を続行する。
  • PCT 君がカード 33 を手に入れる。
  • カード 1,31,3 を食べ、XX44 にする。
  • 現在持っているカードの枚数は 00 枚なので、操作を続行する。

操作が最後まで行われたため、(3,1,2)(3,1,2) のスコアは 1×1=11 \times 1 = 1 です。

(3,1,2)(3,1,2) 以外にスコアが 11 以上になる順列は存在しないため、解は 11 です。

3 3
5
146146 146
103537573