#arc064d. [arc064_d]Rotated Palindromes

[arc064_d]Rotated Palindromes

問題文

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

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

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

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

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

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

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

制約

  • 1N1091≤N≤10^9
  • 1K1091≤K≤10^9

入力

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

NN KK

出力

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


入力例 1

4 2

出力例 1

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)

入力例 2

1 10

出力例 2

10

入力例 3

6 3

出力例 3

75

入力例 4

1000000000 1000000000

出力例 4

875699961