#include <bits/stdc++.h>
using namespace std;
long long n, d, k, ans, arr[10005][105];
long long func(long long maxi, long long sum) {
  long long i, j, m;
  if (sum > n) {
    arr[sum][maxi] = 0;
    return 0;
  }
  if (sum == n && maxi >= d) {
    arr[sum][maxi] = 1;
    return 1;
  }
  if (sum < n) {
    arr[sum][maxi] = 0;
    ans = 0;
    for (i = 1; i <= min(n, k); i++) {
      if (sum + i > n) continue;
      if (arr[sum + i][max(i, maxi)] != -1) {
        arr[sum][maxi] =
            (arr[sum][maxi] + arr[sum + i][max(i, maxi)]) % (1000000007);
      } else {
        j = (func(max(i, maxi), sum + i)) % (1000000007);
        arr[sum][maxi] = (arr[sum][maxi] + j) % (1000000007);
      }
    }
    return arr[sum][maxi];
  }
  return (arr[0][0]) % 1000000007;
}
int main() {
  long long i, j, sum;
  ans = 0;
  scanf("%lld %lld %lld", &n, &k, &d);
  for (i = 0; i < 10004; i++)
    for (j = 0; j < 104; j++) {
      arr[i][j] = -1;
      if (i == n) {
        if (j < d)
          arr[i][j] = 0;
        else
          arr[i][j] = 1;
      }
    }
  ans = func(0, 0);
  printf("%lld\n", ans);
  return 0;
}
