AT_wtf22_day2_b The Greatest Two
Description
[problemUrl]: https://atcoder.jp/contests/wtf22-day2-open/tasks/wtf22_day2_b
整数 $ N,K $ と $ (1,2,\cdots,N) $ の順列 $ P=(P_1,P_2,\cdots,P_N) $ が与えられます.
あなたは以下の操作を好きな回数 ($ 0 $ 回でもよい) 行うことができます.
- 整数 $ i $ ($ 1\ \leq\ i\ \leq\ N-K+1 $) を選ぶ. $ P_i,P_{i+1},\cdots,P_{i+K-1} $ の中で $ 1 $ 番目に大きい要素と $ 2 $ 番目に大きい要素の値を入れ替える.
操作後の $ P $ としてあり得る順列の個数を $ 998244353 $ で割ったあまりを求めてください.
Input Format
入力は以下の形式で標準入力から与えられる.
> $ N $ $ K $ $ P_1 $ $ P_2 $ $ \cdots $ $ P_N $
Output Format
答えを出力せよ.
Explanation/Hint
### 制約
- $ 2\ \leq\ K\ \leq\ N\ \leq\ 250000 $
- $ (P_1,P_2,\cdots,P_N) $ は $ (1,2,\cdots,N) $ の順列である.
- 入力される値はすべて整数.
### Sample Explanation 1
この例では可能な操作は $ i=1 $ のみです. $ 1 $ 回操作すると,$ P_1,P_2,P_3 $ の中で $ 1 $ 番目に大きい要素 ($ =P_2=3 $)と $ 2 $ 番目に大きい要素 ($ =P_1=2 $) の値が入れ替わり,$ P=(3,2,1) $ になります. さらにもう一度操作すると,$ P=(2,3,1) $ になります. よって,操作後の順列としてあり得るのは $ P=(2,3,1),(3,2,1) $ の $ 2 $ つです.