#include <bits/stdc++.h>
using namespace std;
const int N = 102, M = 1000000007;
long long dd[N][N], nd[N][N];
int n, k, d;
int main() {
  int i, j, p;
  long long res = 0;
  cin >> n >> k >> d;
  for (i = 1; i < d; i++) nd[i][0] = 1;
  for (i = d; i <= min(n, k); i++) dd[i][0] = 1;
  for (j = 1; j <= n; j++) {
    for (i = 1; i <= n; i++) {
      if (dd[i][j - 1])
        for (p = 1; p + i <= n && p <= k; p++)
          dd[p + i][j] = (dd[p + i][j] + dd[i][j - 1]) % M;
      for (p = d; p + i <= n && p <= k; p++)
        dd[p + i][j] = (dd[p + i][j] + nd[i][j - 1]) % M;
      for (p = 1; p < d && p + i <= n && p <= k; p++)
        nd[p + i][j] = (nd[p + i][j] + nd[i][j - 1]) % M;
    }
  }
  for (j = 0; j < n; j++) res = (res + dd[n][j]) % M;
  cout << res << endl;
  return 0;
}
