#include <bits/stdc++.h>
using namespace std;
long long memo[107][2];
const long long MOD = 1000000007;
int n, k, d;
long long dp(int sum, bool in) {
  if (sum == 0) {
    return in;
  }
  long long &ret = memo[sum][in];
  if (ret + 1) return ret;
  ret = 0;
  for (int i = 1; i <= k; ++i) {
    if (i > sum) break;
    ret += dp(sum - i, (in || i >= d));
    if (ret >= MOD) ret -= MOD;
  }
  return ret;
}
int main() {
  memset(memo, -1, sizeof memo);
  scanf("%d %d %d", &n, &k, &d);
  cout << dp(n, 0) << endl;
}
