#include <bits/stdc++.h>
using namespace std;
long long n, k, d;
long long dp[10000][3];
long long x = 1e9 + 7;
long long sumx;
int ktree(long long sum, long long flag) {
  if (sum >= n) {
    if (sum == n && flag)
      return 1;
    else
      return 0;
  }
  if (dp[sum][flag] != -1) return dp[sum][flag];
  long long sumx = 0;
  sumx = 0;
  for (int i = 1; i <= k; i++) {
    if (i >= d)
      sumx += ktree(sum + i, 1);
    else
      sumx += ktree(sum + i, flag);
  }
  return dp[sum][flag] = sumx % x;
}
int main() {
  memset(dp, -1, sizeof dp);
  cin >> n >> k >> d;
  cout << ktree(0, 0);
  return 0;
}
