#arc0044. [arc004_4]表現の自由 ( Freedom of expression )

[arc004_4]表現の自由 ( Freedom of expression )

問題文

整数 NNMM が与えられる時、整数 NNMM 個の整数の積で表す方法は何通りあるでしょうか。
その答えを 1,000,000,0071,000,000,007 で割った余りを答えてください。


入力

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

  • 入力は 11 行のみからなり、整数 N(1N109)N(1 ≦ |N| ≦ 10^9) と整数 M(1M105)M(1 ≦ M ≦ 10^5) が空白区切りで与えられる。

出力

整数 NNMM 個の整数の積で表す方法の数を 1,000,000,0071,000,000,007 で割った余りを標準出力に 11 行で出力せよ 。
なお、最後には改行を出力せよ。


入力例 1


10 2

出力例 1


8
  • 101022 つの整数の積で表す方法は以下の 88 通りになります。

  • 1times101 \\times 10

  • 2times52 \\times 5

  • 5times25 \\times 2

  • 10times110 \\times 1

  • (1)times(10)(-1) \\times (-10)

  • (2)times(5)(-2) \\times (-5)

  • (5)times(2)(-5) \\times (-2)

  • (10)times(1)(-10) \\times (-1)


入力例 2


1000000000 1

出力例 2


1
  • 1,000,000,0001,000,000,00011 つの積で書き表すには 1,000,000,0001,000,000,000 と書くしか無いので、11 通りになります。

入力例 3


-2 3

出力例 3


12
  • \-2\-233 つの整数の積で表す方法は以下の 1212 通りになります。

  • 1times1times(2)1 \\times 1 \\times (-2)

  • 1times2times(1)1 \\times 2 \\times (-1)

  • 1times(1)times21 \\times (-1) \\times 2

  • 1times(2)times11 \\times (-2) \\times 1

  • 2times1times(1)2 \\times 1 \\times (-1)

  • 2times(1)times12 \\times (-1) \\times 1

  • (1)times1times2(-1) \\times 1 \\times 2

  • (1)times2times1(-1) \\times 2 \\times 1

  • (1)times(1)times(2)(-1) \\times (-1) \\times (-2)

  • (1)times(2)times(1)(-1) \\times (-2) \\times (-1)

  • (2)times1times1(-2) \\times 1 \\times 1

  • (2)times(1)times(1)(-2) \\times (-1) \\times (-1)


入力例 4


50 1000

出力例 4


96554651

Source Name

ARC 004