#include <bits/stdc++.h>
using namespace std;
int n, k, d, dp[101][2];
int solve(int remaining, bool seen) {
  if (remaining == 0) return seen;
  if (remaining < 0) return 0;
  if (dp[remaining][seen] != -1) return dp[remaining][seen];
  int ret = 0;
  for (int i = 1; i <= k; i++) {
    ret += solve(remaining - i, i >= d ? 1 : seen);
    ret %= 1000000007;
  }
  return dp[remaining][seen] = ret % 1000000007;
}
int main() {
  cin >> n >> k >> d;
  memset(dp, -1, sizeof dp);
  cout << solve(n, 0);
  return 0;
}
