#include <bits/stdc++.h>
using namespace std;
int n, k, d, mark[102][2], l = 1000 * 1000 * 1000 + 7;
long long dp[102][2];
void solve(int x, int y) {
  if (y == 0) {
    for (int i = x - min(d - 1, x); i < x; i++) {
      if (!mark[i][0]) {
        mark[i][0] = 1;
        solve(i, 0);
      }
      dp[x][0] += dp[i][0];
      dp[x][0] = dp[x][0] % l;
    }
  } else {
    for (int i = x - min(d - 1, x); i < x; i++) {
      if (!mark[i][1]) {
        mark[i][1] = 1;
        solve(i, 1);
      }
      dp[x][1] += dp[i][1];
      dp[x][1] = dp[x][1] % l;
    }
    for (int i = x - min(k, x); i <= x - d; i++) {
      if (!mark[i][1]) {
        mark[i][1] = 1;
        solve(i, 1);
      }
      if (!mark[i][0]) {
        mark[i][0] = 1;
        solve(i, 0);
      }
      dp[x][1] += dp[i][1] + dp[i][0];
      dp[x][1] = dp[x][1] % l;
    }
  }
}
int main() {
  cin >> n >> k >> d;
  dp[0][0] = 1;
  mark[0][0] = 1;
  solve(n, 1);
  cout << dp[n][1] % l << endl;
  return 0;
}
