#include <bits/stdc++.h>
using namespace std;
const int sz = 1e5 + 5;
const int mod = 1e9 + 7;
int dp[101][2];
int n, k, d;
int cache(int sum, int flag) {
  if (sum > n) return 0;
  if (sum == n) {
    if (flag == 1) return 1;
    return 0;
  }
  if (dp[sum][flag] != -1) return dp[sum][flag];
  int ans = 0;
  for (int i = 1; i <= k; i++) {
    if (i >= d) {
      ans = (ans + cache(i + sum, 1)) % mod;
    } else
      ans = (ans + cache(i + sum, flag)) % mod;
  }
  dp[sum][flag] = ans;
  return ans;
}
void solver() {
  cin >> n >> k >> d;
  memset(dp, -1, sizeof(dp));
  cout << cache(0, 0);
}
int main() {
  int t = 1;
  while (t--) {
    solver();
  }
  return 0;
}
