#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;

#define int ll
#define endl '\n'
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define Ragaey ios::sync_with_stdio(false), cin.tie(nullptr)

ll MOD = 1e9 + 7;

ll mult(ll a, ll b) { return ((a % MOD) * (b % MOD)) % MOD; }

ll fp(ll base, ll power) {
  if (power == 0)
    return 1;

  ll hp = fp(base, power / 2);
  ll fullPower = mult(hp, hp);

  if (power % 2)
    fullPower = mult(fullPower, base);

  return fullPower;
}

ll divi(ll a, ll b) { return mult(a, fp(b, MOD - 2)); }

void solve() {
  int n, k, d;
  cin >> n >> k >> d;

  if (n - (k - 1) * d + k < 2 * k) {
    cout << 0 << endl;
    return;
  }

  int ans = 1;
  for (int i = 0; i < 2 * k; i++)
    ans = mult(ans, n - (k - 1) * d + k - i);

  int fact = 1;
  for (int i = 1; i <= 2 * k; i++)
    fact = mult(fact, i);

  ans = divi(ans, fact);
  cout << ans << endl;
}

signed main() {
  Ragaey;

  int tc = 1;
  // cin >> tc;
  while (tc--)
    solve();
}
