#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<climits>
#define lli long long int
#define mod 1000000007
using namespace std;
int n, k, d;
lli dp[107][2];
lli recur(lli num, bool activated)
{
if(dp[num][activated]!=-1)
return dp[num][activated];
if(num==0)
{
if(!activated)
return 0;
else
return 1;
}
lli ans=0, i;
for(i=1; i<=k; i++)
if(num-i>=0)
{
if(i>=d)
ans=(ans+recur(num-i, 1))%mod;
else
ans=(ans+recur(num-i, activated))%mod;
}
else
break;
return dp[num][activated]=ans;
}
int main()
{
lli ans, i;
for(i=0; i<107; i++)
{
dp[i][0]=-1;
dp[i][1]=-1;
}
cin >> n >> k >> d;
ans=recur(n, 0);
cout << ans << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxjbGltaXRzPgoKI2RlZmluZSBsbGkgbG9uZyBsb25nIGludAojZGVmaW5lIG1vZCAxMDAwMDAwMDA3Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG4sIGssIGQ7CmxsaSBkcFsxMDddWzJdOwoKbGxpIHJlY3VyKGxsaSBudW0sIGJvb2wgYWN0aXZhdGVkKQp7CglpZihkcFtudW1dW2FjdGl2YXRlZF0hPS0xKQoJCXJldHVybiBkcFtudW1dW2FjdGl2YXRlZF07CgoJaWYobnVtPT0wKQoJCXsKCQkJaWYoIWFjdGl2YXRlZCkKCQkJCXJldHVybiAwOwoJCQllbHNlCgkJCQlyZXR1cm4gMTsKCQl9CgoJbGxpIGFucz0wLCBpOwoKCWZvcihpPTE7IGk8PWs7IGkrKykKCQlpZihudW0taT49MCkKCQkJewoJCQkJaWYoaT49ZCkKCQkJCQlhbnM9KGFucytyZWN1cihudW0taSwgMSkpJW1vZDsKCQkJCWVsc2UKCQkJCQlhbnM9KGFucytyZWN1cihudW0taSwgYWN0aXZhdGVkKSklbW9kOwoJCQl9CgkJZWxzZQoJCQlicmVhazsKCglyZXR1cm4gZHBbbnVtXVthY3RpdmF0ZWRdPWFuczsKfQoKaW50IG1haW4oKQp7CglsbGkgYW5zLCBpOwoKCWZvcihpPTA7IGk8MTA3OyBpKyspCgkJewoJCQlkcFtpXVswXT0tMTsKCQkJZHBbaV1bMV09LTE7CgkJfQoKCWNpbiA+PiBuID4+IGsgPj4gZDsJCQoKCWFucz1yZWN1cihuLCAwKTsKCgljb3V0IDw8IGFucyA8PCBlbmRsOwoKCXJldHVybiAwOwp9