#abc208f. [abc208_f]Cumulative Sum

[abc208_f]Cumulative Sum

問題文

非負整数 n,mn, m に対して関数 f(n,m)f(n, m) を正の整数 KK を用いて次のように定めます。

$\\displaystyle f(n, m) = \\begin{cases} 0 & (n = 0) \\\\ n^K & (n \\gt 0, m = 0) \\\\ f(n-1, m) + f(n, m-1) & (n \\gt 0, m \\gt 0) \\end{cases}$

N,M,KN, M, K が与えられるので、f(N,M)f(N, M)(109+7)(10 ^ 9 + 7) で割った余りを求めてください。

制約

  • 0leqNleq10180 \\leq N \\leq 10^{18}
  • 0leqMleq300 \\leq M \\leq 30
  • 1leqKleq2.5times1061 \\leq K \\leq 2.5 \\times 10^6
  • 入力は全て整数である。

入力

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

NN MM KK

出力

f(N,M)f(N, M)(109+7)(10 ^ 9 + 7) で割った余りを出力せよ。


入力例 1

3 4 2

出力例 1

35

K=2K = 2 の時、 nleq3,mleq4n \\leq 3, m \\leq 4 における f(n,m)f(n, m) の値は次のようになります。

m=0m = 0

m=1m = 1

m=2m = 2

m=3m = 3

m=4m = 4

n=0n = 0

00

00

00

00

00

n=1n = 1

11

11

11

11

11

n=2n = 2

44

55

66

77

88

n=3n = 3

99

1414

2020

2727

3535


入力例 2

0 1 2

出力例 2

0

入力例 3

1000000000000000000 30 123456

出力例 3

297085514