#include <bits/stdc++.h>
using namespace std;
long long dp[102][2];
long long rec(int n, int k, int d, bool found) {
  if (dp[n][found] != -1) return dp[n][found];
  dp[n][found]++;
  for (int i = 1; i <= k && i <= n; i++)
    dp[n][found] += rec(n - i, k, d, found || i >= d),
        dp[n][found] %= 1000000007;
  return dp[n][found];
}
int main() {
  memset(dp, -1, sizeof(dp));
  dp[0][0] = 0, dp[0][1] = 1;
  int n, k, d;
  cin >> n >> k >> d;
  cout << rec(n, k, d, 0) << endl;
  return 0;
}
