AT_arc149_e [ARC149E] Sliding Window Sort

Description

[problemUrl]: https://atcoder.jp/contests/arc149/tasks/arc149_e 正整数 $ N,\ M,\ K $ が与えられます.正整数列 $ A\ =\ (A_0,\ \ldots,\ A_{N-1}) $ に対する次の操作を考えます. - $ k=0,\ 1,\ \ldots,\ K-1 $ の順に次を行う. - $ A_{k\bmod\ N},\ A_{(k+1)\bmod\ N},\ \ldots,\ A_{(k+M-1)\bmod\ N} $ を昇順にソートする.つまり $ A_{k\bmod\ N},\ A_{(k+1)\bmod\ N},\ \ldots,\ A_{(k+M-1)\bmod\ N} $ を小さい方から順に並べたものを $ (x_0,\ \ldots,\ x_{M-1}) $ とするとき,各 $ 0\leq\ j\

Input Format

入力は以下の形式で標準入力から与えられます. > $ N $ $ M $ $ K $ $ B_0 $ $ \ldots $ $ B_{N-1} $

Output Format

正整数列 $ A $ であって,操作を行った結果が $ B $ と一致するものの個数を $ 998244353 $ で割った余りを出力してください.

Explanation/Hint

### 制約 - $ 2\leq\ N\leq\ 3\times\ 10^5 $ - $ 2\leq\ M\leq\ N $ - $ 1\leq\ K\leq\ 10^9 $ - $ 1\leq\ B_i\leq\ N $ - $ i\neq\ j $ ならば $ B_i\neq\ B_j $ ### Sample Explanation 1 例えば $ A\ =\ (4,1,5,6,2,3) $ が条件を満たします.この $ A $ に対して,操作は次のように進行します. - $ k=0 $ に対する操作により,$ A $ は $ (1,4,5,6,2,3) $ になる. - $ k=1 $ に対する操作により,$ A $ は $ (1,4,5,6,2,3) $ になる. - $ k=2 $ に対する操作により,$ A $ は $ (1,4,2,5,6,3) $ になる. - $ k=3 $ に対する操作により,$ A $ は $ (1,4,2,3,5,6) $ になる. - $ k=4 $ に対する操作により,$ A $ は $ (6,4,2,3,1,5) $ になり,$ B $ に一致する. ### Sample Explanation 2 条件を満たす $ A $ は存在しません. ### Sample Explanation 3 $ 1 $ 以上 $ 20 $ 以下の整数からなる順列がすべて条件を満たします.