#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e5;
const int mod = 1e9 + 7;
long long f[nmax + 5], w[nmax + 5], t[nmax + 5];
long long fact[nmax + 1], inv[nmax + 1];
long long lgput(long long b, int e) {
  long long ans = 1;
  while (e > 0) {
    if (e & 1) {
      ans = (ans * b) % mod;
    }
    b = (b * b) % mod;
    e >>= 1;
  }
  return ans;
}
void precalc() {
  fact[0] = 1;
  for (int i = 1; i <= nmax; ++i) {
    fact[i] = (fact[i - 1] * i) % mod;
  }
  for (int i = 0; i <= nmax; ++i) {
    inv[i] = lgput(fact[i], mod - 2);
  }
}
long long comb(int x, int y) {
  if (x < y) return 0;
  return fact[x] * (inv[y] * inv[x - y] % mod) % mod;
}
int main() {
  int F, W, H;
  cin >> F >> W >> H;
  precalc();
  for (int i = 1; i <= F; ++i) {
    f[i] = comb(F - 1, i - 1);
  }
  for (int i = 1; (H + 1) * i <= W; ++i) {
    w[i] = comb(W - H * i - 1, i - 1);
  }
  for (int i = 1; i <= W; ++i) {
    t[i] = comb(W - 1, i - 1);
  }
  if (F == 0) {
    f[0] = 1;
  }
  long long ok, total;
  ok = total = 0;
  for (int i = 0; i <= F; ++i) {
    long long s = (2 * w[i] + w[i + 1]) % mod;
    if (i - 1 >= 0) s = (w[i - 1] + s) % mod;
    ok = (ok + f[i] * s) % mod;
    s = (2 * t[i] + t[i + 1]) % mod;
    if (i - 1 >= 0) s = (t[i - 1] + s) % mod;
    total = (total + f[i] * s) % mod;
  }
  long long prob = ok * lgput(total, mod - 2) % mod;
  if (ok == total) {
    prob = 1;
  }
  cout << prob << "\n";
  return 0;
}
