#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
const int mod = 1e9 + 7;
using namespace std;
long long dp[110];
int n, k, d;
void DP(long long k)
{
dp[0] = 1;
for (int i = 1; i <= n; ++ i)
{
dp[i] = 0;
if (i <= k)
dp[i] = (dp[i] + 1) % mod;
for (int j = 1; j < i; ++ j)
if (j <= k)
{
dp[i] = (dp[i] + dp[i-j]) % mod;
}
}
}
int main()
{
while (~scanf("%d%d%d",&n, &k, &d))
{
DP(k);
long long res = dp[n];
DP(d-1);
res -= dp[n];
while (res < 0) res += mod;
res %= mod;
printf("%I64d\n",res);
}
}