#include <bits/stdc++.h>
using namespace std;
long long dp[101][2];
int n, k, d;
long long nways(int rem, bool d_taken) {
  if (rem < 0) return 0;
  if (rem == 0 && d_taken) {
    return 1;
  }
  if (rem == 0) return 0;
  long long &ret = dp[rem][d_taken];
  if (ret != -1) {
    return ret;
  }
  ret = 0;
  for (int i = 1; i <= k; i++) {
    if (i < d) {
      ret += nways(rem - i, d_taken);
    } else {
      ret += nways(rem - i, true);
    }
    ret %= 1000000007;
  }
  return ret;
}
int main() {
  memset(dp, -1, sizeof(dp));
  cin >> n >> k >> d;
  cout << nways(n, false);
}
