#cpsco2019s3f. [cpsco2019_s3_f]Flexible Permutation

[cpsco2019_s3_f]Flexible Permutation

問題文

正の整数 NN が与えられます。

1,2,ldots,N1, 2, \\ldots, N を並び替えてできる数列 P1,P2,ldots,PNP_1, P_2, \\ldots, P_NN!N! 通りありますが、そのうち以下の条件を満たすものが何通りあるかを、109+710^{9} + 7 で割ったあまりを求めるプログラムを作成してください。

  • Pi>iP_i > i を満たすような ii (=1,2,dots,N)(= 1, 2, \\dots, N) がちょうど AA 個であり、
  • Pi<iP_i < i を満たすような ii (=1,2,dots,N)(= 1, 2, \\dots, N) がちょうど BB 個であり、
  • Pi=iP_i = i を満たすような ii (=1,2,dots,N)(= 1, 2, \\dots, N) がちょうど NABN - A - B 個です。

制約

  • 1leNle3001 \\le N \\le 300
  • 0leA,BleN0 \\le A, B \\le N
  • A+BleNA + B \\le N
  • 与えられる入力はすべて整数です。

部分点

この問題には部分点が設定されています。

  • Nleq15N \\leq 15 を満たす入力に正解すると、300300 点が与えられます。

入力

入力は以下の形式で標準入力から与えられます。

NN AA BB

出力

条件を満たす順列の個数を 109+710^{9} + 7 で割ったあまりを一行に出力してください。


入力例 1

3 1 1

出力例 1

3

(1,3,2),(3,2,1),(2,1,3)(1, 3, 2), (3, 2, 1), (2, 1, 3)33 個が条件を満たします。


入力例 2

6 2 3

出力例 2

126

入力例 3

10 5 0

出力例 3

0

条件を満たす順列が存在しないこともあります。


入力例 4

256 155 51

出力例 4

125746759