AT_cpsco2019_s3_f Flexible Permutation
Description
[problemUrl]: https://atcoder.jp/contests/cpsco2019-s3/tasks/cpsco2019_s3_f
正の整数 $ N $ が与えられます。
$ 1,\ 2,\ \ldots,\ N $ を並び替えてできる数列 $ P_1,\ P_2,\ \ldots,\ P_N $ は $ N! $ 通りありますが、そのうち以下の条件を満たすものが何通りあるかを、$ 10^{9}\ +\ 7 $ で割ったあまりを求めるプログラムを作成してください。
- $ P_i\ >\ i $ を満たすような $ i $ $ (=\ 1,\ 2,\ \dots,\ N) $ がちょうど $ A $ 個であり、
- $ P_i\ を満たすような\ i $ $ (=\ 1,\ 2,\ \dots,\ N) $ がちょうど $ B $ 個であり、
- $ P_i\ =\ i $ を満たすような $ i $ $ (=\ 1,\ 2,\ \dots,\ N) $ がちょうど $ N\ -\ A\ -\ B $ 個です。
Input Format
入力は以下の形式で標準入力から与えられます。
> $ N $ $ A $ $ B $
Output Format
条件を満たす順列の個数を $ 10^{9}\ +\ 7 $ で割ったあまりを一行に出力してください。
Explanation/Hint
### 制約
- $ 1\ \le\ N\ \le\ 300 $
- $ 0\ \le\ A,\ B\ \le\ N $
- $ A\ +\ B\ \le\ N $
- 与えられる入力はすべて整数です。
### 部分点
この問題には部分点が設定されています。
- $ N\ \leq\ 15 $ を満たす入力に正解すると、$ 300 $ 点が与えられます。
### Sample Explanation 1
$ (1,\ 3,\ 2),\ (3,\ 2,\ 1),\ (2,\ 1,\ 3) $ の $ 3 $ 個が条件を満たします。
### Sample Explanation 3
条件を満たす順列が存在しないこともあります。