#include <bits/stdc++.h>
using namespace std;
const int MN = 1e5 + 10, MOD = 1e9 + 7;
int f, w, h, fact[MN], lfac[MN];
int bpw(int a, int b) {
  if (!b) return 1;
  int t = bpw(a, b / 2);
  t = 1ll * t * t % MOD;
  if (b & 1) return 1ll * a * t % MOD;
  return t;
}
int get(int a, int b) {
  if (a == 0 && b == 0) return 1;
  if (a > 0 && b == 0) return 0;
  if (b > a) return 0;
  return 1ll * fact[a - 1] * lfac[b - 1] % MOD * lfac[a - b] % MOD;
}
void ok(int &x) {
  if (x >= MOD) x -= MOD;
}
int main() {
  ios_base ::sync_with_stdio(false), cout.tie(0), cin.tie(0);
  cin >> f >> w >> h;
  if (w == 0) return cout << 1 << '\n', 0;
  for (int i = 0; i < MN; ++i) {
    fact[i] = (i ? 1ll * i * fact[i - 1] % MOD : 1);
    lfac[i] = bpw(fact[i], MOD - 2);
  }
  int P = 0, Q = 0;
  for (int i = 1; i <= w && f >= max(0, i - 1); ++i) {
    if (w >= 1ll * i * h) {
      P += 1ll * get(w - i * h, i) * get(f, i - 1) % MOD;
      ok(P);
      P += 1ll * get(w - i * h, i) * get(f, i) % MOD * 2 % MOD;
      ok(P);
      P += 1ll * get(w - i * h, i) * get(f, i + 1) % MOD;
      ok(P);
    }
    Q += 1ll * get(w, i) * get(f, i - 1) % MOD;
    ok(Q);
    Q += 1ll * get(w, i) * get(f, i) % MOD * 2 % MOD;
    ok(Q);
    Q += 1ll * get(w, i) * get(f, i + 1) % MOD;
    ok(Q);
  }
  cout << 1ll * P * bpw(Q, MOD - 2) % MOD << '\n';
  return 0;
}
