#agc045d. [agc045_d]Lamps and Buttons

[agc045_d]Lamps and Buttons

問題文

11 から NN までの番号のついた NN 個のランプと,11 から NN までの番号のついた NN 個のボタンがあります. 最初,ランプ 1,2,cdots,A1,2,\\cdots,A は点灯しており,それ以外のランプは点灯していません.

すぬけくんとりんごさんは,次のようなゲームを行うことにしました.

  • まず,りんごさんが (1,2,cdots,N)(1,2,\\cdots,N) の順列 (p1,p2,cdots,pN)(p_1,p_2,\\cdots,p_N) を生成する. この順列は N!N! 通りの中から一様ランダムに選ばれる. すぬけくんは,この順列を知らされない.

  • 次に,すぬけくんは,以下の操作を好きなだけ繰り返す.

    • 現在点灯しているランプを 11 つ選ぶ(そのようなランプがない場合は操作を行えない). 選んだランプの番号を ii とする. そして,ボタン ii を押す. すると,ランプ pip_i の状態が反転する.つまり,ランプ pip_i がもともと点灯しているなら消灯し,もともと点灯していないなら点灯する.

すぬけくんは,常に,どのランプが点灯しているかを知ることができます. すぬけくんの勝利条件は,すべてのランプを点灯した状態にすることです. これが不可能と判明した時点ですぬけくんは負けを認めます. すぬけくんが最適に行動するとき,勝率はいくらでしょうか?

すぬけくんの勝率を ww とした時,wtimesN!w \\times N! は整数になります. wtimesN!w \\times N!109+710^9+7 で割ったあまりを求めてください.

制約

  • 2leqNleq1072 \\leq N \\leq 10^7
  • 1leqAleqmin(N1,5000)1 \\leq A \\leq \\min(N-1,5000)

入力

入力は以下の形式で標準入力から与えられる.

NN AA

出力

すぬけくんの勝率を ww とした時,wtimesN!w \\times N!109+710^9+7 で割ったあまりを出力せよ.


入力例 1

3 1

出力例 1

2

すぬけくんはまず,ボタン 11 を押します. ランプ 11 が消灯した場合はすぬけくんの負けです. そうでないときは,新しく点灯したランプに対応するボタンを押します. ここで残っていたランプが点灯すれば,すぬけくんの勝ちです. 逆に,ランプ 11 が消灯した場合,すぬけくんの負けです. このゲームの勝率は 1/31/3 なので,(1/3)times3!=2(1/3)\\times 3!=2 を出力します.


入力例 2

3 2

出力例 2

3

入力例 3

8 4

出力例 3

16776

入力例 4

9999999 4999

出力例 4

90395416