#include <bits/stdc++.h>
using namespace std;
int dp[102][102], mod = 1000000007, k;
long long int find(int n, int k) {
  if (dp[n][k] != -1) return dp[n][k];
  if (n == 0) return 1;
  long long int sum = 0;
  for (long long int i = 1; i < k + 1; i++) {
    if (n - i >= 0) {
      sum = (sum + find(n - i, k)) % mod;
    } else
      break;
  }
  return dp[n][k] = sum % mod;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  {
    long long int n, m, x, y, q, ans = 0, f = 1, a, b, d;
    cin >> n >> k >> d;
    memset(dp, -1, sizeof(dp));
    cout << ((find(n, k) - find(n, d - 1)) % mod + mod) % mod;
    cout << '\n';
  }
  return 0;
}
