atcoder#AGC005D. [AGC005D] ~K Perm Counting

[AGC005D] ~K Perm Counting

配点 : 900900

問題文

すぬけ君は順列が大好きなので、長さ NN の順列を作ることにしました。

ただしすぬけ君は整数 KK が嫌いなので、以下の条件を満たす順列を作ることにしました。

  • 順列を a1,a2,...,aNa_1, a_2, ..., a_N とする。全ての i=1,2,...,Ni = 1,2,...,N について、aiiK|a_i - i| \neq K を満たす

長さ NN の順列は N!N! 通りありますが、そのうち条件をみたすものは何個あるかを求めてください。

ただし答えは非常に大きくなることがあるので、答えを 924844033924844033(素数) で割ったあまりを求めてください。

制約

  • 2N20002 \leq N \leq 2000
  • 1KN11 \leq K \leq N-1

入力

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

NN KK

出力

11 行に答えを 924844033924844033 で割ったあまりを出力する。

3 1
2

(1,2,3)(1, 2, 3), (3,2,1)(3, 2, 1)22 つが条件を満たす。

4 1
5

(1,2,3,4)(1, 2, 3, 4), (1,4,3,2)(1, 4, 3, 2), (3,2,1,4)(3, 2, 1, 4), (3,4,1,2)(3, 4, 1, 2), (4,2,3,1)(4, 2, 3, 1)55 つが条件を満たす。

4 2
9
4 3
14
425 48
756765083