#include <bits/stdc++.h>
using namespace std;
const int MODN = 1e9 + 7;
const int MAXN = 200 + 13;
int n = 0, k = 0, d = 0;
long long int s[MAXN][MAXN], p[MAXN][MAXN], v = 0, u = 0;
int main(int argc, const char* argv[]) {
  cin >> n >> k >> d;
  for (int i = 1; i <= k; i++) s[1][i] = 1;
  for (int i = 2; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      for (int l = 1; l <= min(j, k); l++) {
        s[i][j] += s[i - 1][j - l];
        s[i][j] %= MODN;
      }
    }
  }
  for (int i = 1; i < d; i++) p[1][i] = 1;
  for (int i = 2; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      for (int l = 1; l <= min(j, d - 1); l++) {
        p[i][j] += p[i - 1][j - l];
        p[i][j] %= MODN;
      }
    }
  }
  for (int i = 1; i <= n; i++) v = (v + s[i][n]) % MODN;
  for (int i = 1; i <= n; i++) u = (u + p[i][n]) % MODN;
  int sum = (v - u) % MODN + MODN;
  cout << sum % MODN;
  return 0;
}
