#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long Pow(long long x, long long i) {
  long long ret = 1;
  while (i) {
    if (i & 1) ret = ret * x % mod;
    x = x * x % mod;
    i /= 2;
  }
  return ret;
}
long long num1, numh;
long long Fac[201111], uFac[201111];
void Prepare() {
  Fac[0] = uFac[0] = 1;
  for (int i = (1); i <= (200000); i++) Fac[i] = Fac[i - 1] * i % mod;
  uFac[200000] = Pow(Fac[200000], mod - 2);
  for (int i = (199999); i >= (1); i--) uFac[i] = uFac[i + 1] * (i + 1) % mod;
}
long long C(long long nn, long long mm) {
  if (mm > nn) return 0;
  return Fac[nn] * uFac[mm] % mod * uFac[nn - mm] % mod;
}
int main() {
  Prepare();
  long long f, w, h;
  cin >> f >> w >> h;
  num1 = numh = 0;
  for (int ww = (0); ww <= (w); ww++) {
    long long wnum1, wnumh;
    wnum1 = wnumh = 0;
    if (ww == 0) {
      if (w == 0) wnum1 = wnumh = 1;
    } else {
      wnum1 = C(w - 1, ww - 1);
      if (w - h * ww < ww)
        wnumh = 0;
      else
        wnumh = C(w - h * ww - 1, ww - 1);
    }
    for (int ff = (ww - 1); ff <= (ww + 1); ff++) {
      if (ff == 0 && f == 0) {
        num1 += wnum1 % mod;
        numh += wnumh % mod;
        num1 %= mod;
        numh %= mod;
      }
      if (ff <= 0 || ff > f) continue;
      long long tmp = C(f - 1, ff - 1);
      if (ff == ww) tmp = tmp * 2 % mod;
      num1 += tmp * wnum1 % mod;
      numh += tmp * wnumh % mod;
      num1 %= mod;
      numh %= mod;
    }
  }
  long long ans = numh * Pow(num1, mod - 2) % mod;
  cout << ans << endl;
  return 0;
}
