ある日の夕方。いつものようにあなたが居間でテレビを見ていると、小学5年生の妹から相談を持ち かけられた。話を聞いてみると、今日学校で出された算数の問題が難しくて理解できなかったので、 あなたに解き方を教えてほしいのだという。
妹を悩ませている問題は、「道が碁盤目状に通っている街において、家(0, 0) から学校(N, M) まで最短距離で進む方法は何通りあるか?」というものだった。もちろん、あなたにとっては赤子の手をひねるよりも簡単な問題である。すぐに上のような図を書いて「家(0, 0) から順番に足し算していけば解けるよ」と教えてあげた。
ところが、それを聞いてもまだ、妹はなにやら下を向いて考えこんでいる。あなたは、自分の説明の 仕方が悪かったのだろうかと思ったが、どうやらそうではないらしい。
たっぷり3分ほど悩んでいただろうか。妹は、おもむろに顔を上げると、あなたに向かってこう言っ た。
「でも、わたしだったら、きっと学校に行く途中でK 回くらい寄り道しちゃうだろうな……。ねぇお 兄ちゃん、そうすると答えは何通りになるの?」
さあ大変だ。兄の威厳を保つため、なんとしてもこの問題に答えねば。
この問題を定式化すると、次のようになる。
N M K
入力の1行目には、整数N(1 ≤ N ≤ 100,000)と整数M(1 ≤ M ≤ 100,000)と整数K(0 ≤ K ≤ 10,000)が、この順に空白区切りで書かれている。整数N は学校のX 座標を、整数M は学校のY座標を、整数K は寄り道の回数をあらわす。
点(0, 0) から点(N, M) まで、K 回の寄り道をして進む方法。その総数を1,000,000,007 で割った余りを出力せよ。なお1,000,000,007 は素数である。
6 4 0
210
3 3 1
448
124 218 367
817857665