#include <bits/stdc++.h>
using namespace std;
long long int dp[105][3];
long long int first(long long int second, long long int k, long long int d,
                    long long int ch) {
  if (second == 0 and ch) return 1;
  if (dp[second][ch] != -1) return dp[second][ch];
  long long int ans = 0;
  for (long long int i = 1; i <= k; i++) {
    if (second >= i) {
      if (i >= d)
        ans += first(second - i, k, d, 1);
      else
        ans += first(second - i, k, d, ch);
    }
    ans %= 1000000007;
  }
  return dp[second][ch] = ans;
}
void solve() {
  long long int n, k, d;
  cin >> n >> k >> d;
  memset(dp, -1, sizeof(dp));
  cout << first(n, k, d, 0) << "\n";
}
int32_t main() {
  long long int T = 1;
  for (long long int t = 1; t <= T; t++) {
    solve();
  }
  return 0;
}
