#icpc2014autumng. [icpc2014autumn_g]Cookie Counter

[icpc2014autumn_g]Cookie Counter

问题描述

有一天,我的祖母留下了N块饼干。我和姐姐打算立即吃掉它们,但有条说明。

  • 饼干会变质;你应该在D天内全部吃完。
  • 要小心过度进食;你每天应该严格少于X块饼干。

我姐姐说:“有多少种方法可以吃完所有的饼干?我们来试着数一数!”

如果存在一天,两种方式在那一天吃的饼干数量不同,则认为这两种方式是不同的。例如,如果N、D和X分别为5、2和5,那么方法的数量为4:

  • 第一天吃1块饼干,第二天吃4块饼干。
  • 第一天吃2块饼干,第二天吃3块饼干。
  • 第一天吃3块饼干,第二天吃2块饼干。
  • 第一天吃4块饼干,第二天吃1块饼干。

我意识到方法的数量将非常大,而且我姐姐在数数之前可能会死去。因此,我尝试用计算机程序来计算它,以拯救我姐姐的生命。

输入

输入包含多个数据集。数据集的数量不超过100。对于每个数据集,一行中以空格分隔写入了三个数字N(1N2,0001 \le N \le 2,000),D(1D10121 \le D \le 10^{12})和X(1X2,0001 \le X \le 2,000)。输入的结束由一行包含三个零表示。

输出

对于每个数据集,在一行中输出方法的数量模1,000,000,0071,000,000,007

样例输入

5 2 5
3 3 3
5 4 5
4 1 2
1 5 1
1250 50 50
0 0 0```

### 样例输出

```plain
4
7
52
0
0
563144298```

### 来源名称

JAG Practice Contest for ACM-ICPC Asia Regional 2014