#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
unsigned long long iqpow(unsigned long long x,
unsigned long long e,
unsigned long long p)
{
unsigned long long res = 1;
x %= p;
for(;e;e>>=1)
{
if (e&1) res = (res*x)%p;
x = (x*x)%p;
}
return res;
}
int main()
{
unsigned long long n, m, l, mod = 1000000007, ans = 0;
cin >> n >> m >> l;
vector <unsigned long long> fac(n + 2, 1);
for (int i = 2; i <= n + 1; ++ i){fac[i] = fac[i - 1] * i % mod;}
for (int k = 1; k <= l && m*k <= n; ++k)
{
ans = (ans + (fac[n] * iqpow(fac[n - m * k] * fac[m * k] % mod, mod - 2, mod) % mod)) % mod;
}
cout << ans;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCnVuc2lnbmVkIGxvbmcgbG9uZyBpcXBvdyh1bnNpZ25lZCBsb25nIGxvbmcgeCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBlLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHApCnsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXMgPSAxOwogICAgeCAlPSBwOwogICAgZm9yKDtlO2U+Pj0xKQogICAgewogICAgICAgIGlmIChlJjEpIHJlcyA9IChyZXMqeCklcDsKICAgICAgICB4ID0gKHgqeCklcDsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KCmludCBtYWluKCkKewogICAgdW5zaWduZWQgbG9uZyBsb25nIG4sIG0sIGwsIG1vZCA9IDEwMDAwMDAwMDcsIGFucyA9IDA7CiAgICBjaW4gPj4gbiA+PiBtID4+IGw7CiAgICB2ZWN0b3IgPHVuc2lnbmVkIGxvbmcgbG9uZz4gZmFjKG4gKyAyLCAxKTsKICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG4gKyAxOyArKyBpKXtmYWNbaV0gPSBmYWNbaSAtIDFdICogaSAlIG1vZDt9CgogICAgZm9yIChpbnQgayA9IDE7IGsgPD0gbCAmJiBtKmsgPD0gbjsgKytrKQogICAgewogICAgICAgIGFucyA9IChhbnMgKyAoZmFjW25dICogaXFwb3coZmFjW24gLSBtICoga10gKiBmYWNbbSAqIGtdICUgbW9kLCBtb2QgLSAyLCBtb2QpICUgbW9kKSkgJSBtb2Q7CiAgICB9CiAgICBjb3V0IDw8IGFuczsKICAgIHJldHVybiAwOwp9Cg==