#include <bits/stdc++.h>
long long dp[2][101];
long long ways[101];
long long waysx[101];
int n, k, d, i, j;
int main() {
  while (~scanf("%d %d %d", &n, &k, &d)) {
    memset(ways, 0, sizeof(ways));
    memset(waysx, 0, sizeof(waysx));
    ways[0] = waysx[0] = 1;
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= k; j++) {
        if (i - j < 0) break;
        ways[i] += ways[i - j] % 1000000007;
      }
      for (int j = 1; j < d; j++) {
        if (i - j < 0) break;
        waysx[i] += waysx[i - j] % 1000000007;
      }
    }
    printf("%I64d\n",
           ((ways[n] - waysx[n]) % 1000000007 + 1000000007) % 1000000007);
  }
  return 0;
}
