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 $ - 入力される値は全て整数