#include <iostream>
using namespace std;
const long long Mod = 1000000007;
long long mod(long long a, long long mod){
return a%mod;
}
long long sum(long long a, long long b){
return (a + b)% Mod;
}
long long mul(long long a, long long b){
return (a * b)% Mod;
}
long long fastpow(long long a, long long n){
if (n == 0){
return 1;
}
if (n % 2 == 0){
int g = fastpow(a, n / 2);
return mul (g, g);
}
else{
return mul(a, fastpow(a, n - 1));
}
}
long long revers(long long a){
return fastpow(a, Mod - 2);
}
long long dv(long long a, long long b){
return mul(a, revers(b));
}
int main(){
long long n, l, m;
cin >> n >> m >> l;
long long fact[n + 1];
fact[0] = 1;
for (int i = 1; i < n + 1; i++)
fact[i] = mul(fact[i - 1], i);
long long s = 0;
for (int i = 1; i <= l; i++){
if (i * m <= n)
s = sum(s, mod(dv(fact[n], mul(fact[n - i * m], fact[i * m])), Mod));
}
cout << s% Mod;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNb2QgPSAxMDAwMDAwMDA3OwoKbG9uZyBsb25nIG1vZChsb25nIGxvbmcgYSwgbG9uZyBsb25nIG1vZCl7CiAgICByZXR1cm4gYSVtb2Q7Cn0KCmxvbmcgbG9uZyBzdW0obG9uZyBsb25nIGEsIGxvbmcgbG9uZyBiKXsKICAgIHJldHVybiAoYSArIGIpJSBNb2Q7Cn0KCmxvbmcgbG9uZyBtdWwobG9uZyBsb25nIGEsIGxvbmcgbG9uZyBiKXsKICAgIHJldHVybiAoYSAqIGIpJSBNb2Q7Cn0KCmxvbmcgbG9uZyBmYXN0cG93KGxvbmcgbG9uZyBhLCBsb25nIGxvbmcgbil7CiAgICBpZiAobiA9PSAwKXsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIGlmIChuICUgMiA9PSAwKXsKICAgICAgICBpbnQgZyA9IGZhc3Rwb3coYSwgbiAvIDIpOwogICAgICAgIHJldHVybiBtdWwgKGcsIGcpOwogICAgfQogICAgZWxzZXsKICAgICAgICByZXR1cm4gbXVsKGEsIGZhc3Rwb3coYSwgbiAtIDEpKTsKICAgIH0KfQoKbG9uZyBsb25nIHJldmVycyhsb25nIGxvbmcgYSl7CiAgICByZXR1cm4gZmFzdHBvdyhhLCBNb2QgLSAyKTsKfQoKbG9uZyBsb25nIGR2KGxvbmcgbG9uZyBhLCBsb25nIGxvbmcgYil7CiAgICByZXR1cm4gbXVsKGEsIHJldmVycyhiKSk7Cn0KCmludCBtYWluKCl7CiAgICBsb25nIGxvbmcgbiwgbCwgbTsKICAgIGNpbiA+PiBuID4+IG0gPj4gbDsKICAgIGxvbmcgbG9uZyBmYWN0W24gKyAxXTsKICAgIGZhY3RbMF0gPSAxOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuICsgMTsgaSsrKQogICAgICAgIGZhY3RbaV0gPSBtdWwoZmFjdFtpIC0gMV0sIGkpOwogICAgbG9uZyBsb25nIHMgPSAwOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGw7IGkrKyl7CiAgICAgICAgaWYgKGkgKiBtIDw9IG4pCiAgICAgICAgICBzID0gc3VtKHMsIG1vZChkdihmYWN0W25dLCBtdWwoZmFjdFtuIC0gaSAqIG1dLCBmYWN0W2kgKiBtXSkpLCBNb2QpKTsKICAgIH0KICAgIGNvdXQgPDwgcyUgTW9kOwp9Cg==