#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
long long fac[maxn], ifac[maxn];
int F, W, H, n;
long long P, Q;
long long C(long long n, long long m) {
  if (n == m && n == -1) return 1;
  return n < 0 || m < 0 || n < m
             ? 0
             : fac[n] * ifac[m] % 1000000007 * ifac[n - m] % 1000000007;
}
long long power(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) (res *= a) %= 1000000007;
    b >>= 1;
    (a *= a) %= 1000000007;
  }
  return res;
}
int main() {
  scanf("%d%d%d", &F, &W, &H);
  n = F + W;
  fac[0] = 1;
  for (int i = 1; i <= 100000; i++) fac[i] = fac[i - 1] * i % 1000000007;
  ifac[100000] = power(fac[100000], 1000000007 - 2);
  for (int i = 100000; i; i--) ifac[i - 1] = ifac[i] * i % 1000000007;
  for (int i = 1; i <= n; i++) {
    int w = (i & 1) ? 1 : 2;
    for (int j = i >> 1; j <= (i + 1) >> 1; j++) {
      long long q =
          C(F - 1, j - 1) * C(W - 1, i - j - 1) % 1000000007 * w % 1000000007;
      long long p = C(F - 1, j - 1) * C(W - 1LL * (i - j) * H - 1, i - j - 1) %
                    1000000007 * w % 1000000007;
      (Q += q) %= 1000000007, (P += p) %= 1000000007;
    }
  }
  printf("%lld", P * power(Q, 1000000007 - 2) % 1000000007);
  return 0;
}
