#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18;
const long long mod = 1e9 + 7;
const long long N = 1e5 + 10;
inline long long add(long long x, long long y) {
  x += y;
  if (x >= mod) x -= mod;
  return x;
}
inline long long mul(long long x, long long y) {
  x = (1LL * x * y) % mod;
  return x;
}
inline long long pow_(long long x, long long y, long long p = mod) {
  long long r = 1;
  while (y) {
    if (y & 1) r = r * x % p;
    y >>= 1;
    x = x * x % p;
  }
  return r;
}
inline long long inv_(long long x) { return pow_(x, mod - 2, mod); }
long long f, w, h;
long long fact[N];
void pre() {
  fact[0] = 1;
  fact[1] = 1;
  for (long long i = 2; i <= 1e5; ++i) {
    fact[i] = mul(i, fact[i - 1]);
  }
}
long long ncr(long long n, long long r) {
  if (r > n || n < 0 || r < 0) return 0;
  return mul(fact[n], inv_(mul(fact[r], fact[n - r])));
}
long long first(long long n) { return ncr(w - 1, n - 1); }
long long Fp(long long n) { return ncr(w - n * (h - 1) - 1, n - 1); }
long long H(long long n) { return ncr(f - 1, n - 1); }
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  pre();
  cin >> f >> w >> h;
  if (w == 0) {
    cout << "1";
    return 0;
  }
  h++;
  long long denum = 0;
  for (long long n = 1; n <= w; ++n) {
    if (f == 0)
      denum = denum + first(n);
    else
      denum = denum + first(n) * H(n - 1) + 2 * first(n) * H(n) +
              first(n) * H(n + 1);
    denum %= mod;
  }
  long long num = 0;
  for (long long n = 1; n <= w / h; ++n) {
    if (f == 0)
      num = num + Fp(n);
    else
      num = num + Fp(n) * H(n - 1) + 2 * Fp(n) * H(n) + Fp(n) * H(n + 1);
    num %= mod;
  }
  cout << mul(num, inv_(denum));
  return 0;
}
