AT_ndpc2026_i 更新点
Description
長さ $ N $ の数列 $ B = (B_1, B_2, \dots, B_N) $ に対して、**prefix max の更新点** と **suffix max の更新点** を次のように定義します。
- 任意の $ 1 \leq j \lt i $ について $ B_j \lt B_i $ が成り立つ整数 $ i $ を prefix max の更新点と呼ぶ。
- 任意の $ i \lt j \leq N $ について $ B_j \lt B_i $ が成り立つ整数 $ i $ を suffix max の更新点と呼ぶ。
長さ $ N $ の数列 $ A=(A_1, A_2, \dots, A_N) $ および $ L,R $ が与えられます。
$ A $ の要素を並べ替えてできる数列であって、prefix max の更新点が $ L $ 個、suffix max の更新点が $ R $ 個であるものとしてあり得る数列の個数を $ 998244353 $ で割った余りを求めてください。ただし、 $ 2 $ つの数列は列として一致する時に同じであるとみなします。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ L $ $ R $ $ A_1 $ $ A_2 $ $ \dots $ $ A_N $
Output Format
条件を満たす数列の個数を $ 998244353 $ で割った余りを出力せよ。
Explanation/Hint
### Sample Explanation 1
条件を満たす数列は次の $ 2 $ 通りです。
- $ (3,2,1,4) $
- $ (3,1,2,4) $
### Constraints
- $ 1 \leq N \leq 400 $
- $ 1 \leq L \leq N $
- $ 1 \leq R \leq N $
- $ 1 \leq A_i \leq N $
- 入力される値は全て整数