AT_arc146_f [ARC146F] Simple Solitaire

Description

[problemUrl]: https://atcoder.jp/contests/arc146/tasks/arc146_f $ (1,2,\dots,N) $ の順列 $ P $ を用意して、次の操作を行います。 > $ N $ 枚のカードがあります。これらのカードには $ 1 $ から $ N $ の番号がついてます。カード $ i $ には $ P_i $ が書かれています。 > > 整数 $ X=1 $ があります。はじめ PCT 君は何も持っていません。PCT 君は以下の操作を $ i=1,2,\dots,N $ の順で行います。 > > - カード $ i $ を手に入れる。その後、$ X $ が書かれたカードを持っている限り以下の行動を繰り返す。 > - $ X $ の書かれているカードを食べ、$ X $ を $ 1 $ 増やす。 > > - 現在持っているカードの枚数が $ M $ 枚以上の場合、持っているカードを全て捨てて操作を終了する。これ以降も操作は行わない。 ここで、以下のように順列 $ P $ のスコアを定義します。 - カードが捨てられて操作が終わった場合、$ P $ のスコアを $ 0 $ とする。 - カードが捨てられずに操作が最後まで行われた場合、$ P $ のスコアを $ \prod_{i=1}^{N-1} $ $ (i $ 回目の操作終了時に PCT 君が持っているカードの枚数 $ ) $ とする。 $ P $ としてあり得るものは $ N! $ 通りありますが、そのすべてに対してスコアの総和を $ 998244353 $ で割ったあまりを出力してください。

Input Format

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

Output Format

答えを出力せよ。

Explanation/Hint

### 制約 - $ 2\ \le\ N\ \le\ 2\ \times\ 10^5 $ - $ 2\ \le\ M\ \le\ N $ - 入力は全て整数である。 ### Sample Explanation 1 $ P=(3,1,2) $ の場合、以下のように操作が行われます。 - $ 1 $ 回目の操作 - PCT 君がカード $ 1 $ を手に入れる。 - 現在持っているカードの枚数は $ 1 $ 枚なので、操作を続行する。 - $ 2 $ 回目の操作 - PCT 君がカード $ 2 $ を手に入れる。 - カード $ 2 $ を食べ、$ X $ を $ 2 $ にする。 - 現在持っているカードの枚数は $ 1 $ 枚なので、操作を続行する。 - $ 3 $ 回目の操作 - PCT 君がカード $ 3 $ を手に入れる。 - カード $ 1,3 $ を食べ、$ X $ を $ 4 $ にする。 - 現在持っているカードの枚数は $ 0 $ 枚なので、操作を続行する。 操作が最後まで行われたため、$ (3,1,2) $ のスコアは $ 1\ \times\ 1\ =\ 1 $ です。 $ (3,1,2) $ 以外にスコアが $ 1 $ 以上になる順列は存在しないため、解は $ 1 $ です。