#include <bits/stdc++.h>
using namespace std;
int n, k, d, mod = 1000000007;
long long dp[105][2];
long long go(int nw, bool gotit) {
  if (nw == 0 && gotit) return 1;
  if (nw <= 0) return 0;
  if (dp[nw][gotit] != -1) return dp[nw][gotit];
  long long ret = 0;
  for (int i = 1; i <= k; i++) {
    if (nw - i >= 0) {
      ret += go(nw - i, (gotit | i >= d));
    } else
      break;
    ret %= mod;
  }
  return dp[nw][gotit] = ret;
}
int main() {
  memset(dp, -1, sizeof(dp));
  cin >> n >> k >> d;
  cout << go(n, 0) << endl;
}
