#include <bits/stdc++.h>
using namespace std;
const int mxn = 105, mod = 1e9 + 7;
int main(void) {
  {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
  };
  int n, k, i, d, j;
  cin >> n >> k >> d;
  long long int dp1[mxn] = {0}, dp[mxn] = {0};
  dp1[0] = 1;
  dp1[1] = 1;
  for (i = 2; i <= k; i++) dp1[i] = (2 * (dp1[i - 1] % mod)) % mod;
  for (i = k + 1; i <= n; i++) {
    dp1[i] = ((2 * (dp1[i - 1] % mod)) % mod - (dp1[i - k - 1] % mod)) % mod;
    if (dp1[i] < 0) dp1[i] = mod + dp1[i];
  }
  for (i = 0; i < d; i++) dp[i] = 0;
  dp[d] = 1;
  dp[0] = 1;
  for (i = d + 1; i <= n; i++) {
    if (k < d) {
      break;
    } else {
      for (j = 1; j < min(i, d); j++) {
        dp[i] += dp[i - j];
        dp[i] %= mod;
      }
      for (j = min(i, d); j <= min(i, k); j++) {
        dp[i] += dp1[i - j];
        dp[i] %= mod;
      }
    }
  }
  cout << dp[n] << endl;
}
