atcoder#ARC064D. [ARC064F] Rotated Palindromes

[ARC064F] Rotated Palindromes

配点 : 10001000

問題文

高橋君と青木君が協力して数列を作ることになりました。

まず、高橋君が次の条件をすべて満たす数列 aa を用意します。

  • aa は長さ NN である。
  • aa の各要素は 11 以上 KK 以下の整数である。
  • aa は回文である。 すなわち、aa を逆順にした数列は元の aa と一致する。

次に、青木君が次の操作を好きな回数だけ繰り返します。

  • aa の先頭要素を末尾へ移動する。

以上の手続きにより、最終的な aa が得られます。

最終的な aa として考えられるものは何通りあるでしょうか? 109+710^9+7 で割った余りを求めてください。

制約

  • 1N1091 \leq N \leq 10^9
  • 1K1091 \leq K \leq 10^9

入力

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

NN KK

出力

最終的な aa として考えられるものは何通りあるか? 109+710^9+7 で割った余りを出力せよ。

4 2
6

次の 66 通りです。

  • (1,1,1,1)(1, 1, 1, 1)
  • (1,1,2,2)(1, 1, 2, 2)
  • (1,2,2,1)(1, 2, 2, 1)
  • (2,2,1,1)(2, 2, 1, 1)
  • (2,1,1,2)(2, 1, 1, 2)
  • (2,2,2,2)(2, 2, 2, 2)
1 10
10
6 3
75
1000000000 1000000000
875699961