#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
#define int ll
#define endl '\n'
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define Ragaey ios::sync_with_stdio(false), cin.tie(nullptr)
ll MOD = 1e9 + 7;
ll mult(ll a, ll b) { return ((a % MOD) * (b % MOD)) % MOD; }
ll fp(ll base, ll power) {
if (power == 0)
return 1;
ll hp = fp(base, power / 2);
ll fullPower = mult(hp, hp);
if (power % 2)
fullPower = mult(fullPower, base);
return fullPower;
}
ll divi(ll a, ll b) { return mult(a, fp(b, MOD - 2)); }
void solve() {
int n, k, d;
cin >> n >> k >> d;
if (n - (k - 1) * d + k < 2 * k) {
cout << 0 << endl;
return;
}
int ans = 1;
for (int i = 0; i < 2 * k; i++)
ans = mult(ans, n - (k - 1) * d + k - i);
int fact = 1;
for (int i = 1; i <= 2 * k; i++)
fact = mult(fact, i);
ans = divi(ans, fact);
cout << ans << endl;
}
signed main() {
Ragaey;
int tc = 1;
// cin >> tc;
while (tc--)
solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwp1c2luZyBsZCA9IGxvbmcgZG91YmxlOwoKI2RlZmluZSBpbnQgbGwKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBhbGwodikgKHYpLmJlZ2luKCksICh2KS5lbmQoKQojZGVmaW5lIHJhbGwodikgKHYpLnJiZWdpbigpLCAodikucmVuZCgpCiNkZWZpbmUgUmFnYWV5IGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKQoKbGwgTU9EID0gMWU5ICsgNzsKCmxsIG11bHQobGwgYSwgbGwgYikgeyByZXR1cm4gKChhICUgTU9EKSAqIChiICUgTU9EKSkgJSBNT0Q7IH0KCmxsIGZwKGxsIGJhc2UsIGxsIHBvd2VyKSB7CiAgaWYgKHBvd2VyID09IDApCiAgICByZXR1cm4gMTsKCiAgbGwgaHAgPSBmcChiYXNlLCBwb3dlciAvIDIpOwogIGxsIGZ1bGxQb3dlciA9IG11bHQoaHAsIGhwKTsKCiAgaWYgKHBvd2VyICUgMikKICAgIGZ1bGxQb3dlciA9IG11bHQoZnVsbFBvd2VyLCBiYXNlKTsKCiAgcmV0dXJuIGZ1bGxQb3dlcjsKfQoKbGwgZGl2aShsbCBhLCBsbCBiKSB7IHJldHVybiBtdWx0KGEsIGZwKGIsIE1PRCAtIDIpKTsgfQoKdm9pZCBzb2x2ZSgpIHsKICBpbnQgbiwgaywgZDsKICBjaW4gPj4gbiA+PiBrID4+IGQ7CgogIGlmIChuIC0gKGsgLSAxKSAqIGQgKyBrIDwgMiAqIGspIHsKICAgIGNvdXQgPDwgMCA8PCBlbmRsOwogICAgcmV0dXJuOwogIH0KCiAgaW50IGFucyA9IDE7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCAyICogazsgaSsrKQogICAgYW5zID0gbXVsdChhbnMsIG4gLSAoayAtIDEpICogZCArIGsgLSBpKTsKCiAgaW50IGZhY3QgPSAxOwogIGZvciAoaW50IGkgPSAxOyBpIDw9IDIgKiBrOyBpKyspCiAgICBmYWN0ID0gbXVsdChmYWN0LCBpKTsKCiAgYW5zID0gZGl2aShhbnMsIGZhY3QpOwogIGNvdXQgPDwgYW5zIDw8IGVuZGw7Cn0KCnNpZ25lZCBtYWluKCkgewogIFJhZ2FleTsKCiAgaW50IHRjID0gMTsKICAvLyBjaW4gPj4gdGM7CiAgd2hpbGUgKHRjLS0pCiAgICBzb2x2ZSgpOwp9Cg==