#include <bits/stdc++.h>
const int N = 200005;
const int mod = 1e9 + 7;
int f, w, h, fac[N], ifac[N], n;
using namespace std;
int C(int x, int y) {
  if (x < y) return 0;
  return (long long)fac[x] * ifac[y] % mod * ifac[x - y] % mod;
}
int calc(int a, int b) {
  int ans = 1, tmp = a;
  while (b) {
    if (b & 1) ans = (long long)ans * tmp % mod;
    tmp = (long long)tmp * tmp % mod, b >>= 1;
  }
  return ans;
}
int main() {
  scanf("%d %d %d", &f, &w, &h);
  h++, n = max(max(f, w), h);
  if (w == 0) {
    printf("1");
    return 0;
  }
  int i;
  fac[0] = ifac[0] = 1;
  for (i = 1; i <= n * 2; i++) fac[i] = (long long)fac[i - 1] * i % mod;
  ifac[n * 2] = calc(fac[n * 2], mod - 2);
  for (i = n * 2 - 1; i >= 1; i--)
    ifac[i] = (long long)ifac[i + 1] * (i + 1) % mod;
  int p = 0, q = 0;
  for (i = 1; i * h <= w; i++)
    p += (long long)C(w - i * h + i - 1, i - 1) * C(f + 1, i) % mod, p %= mod;
  for (i = 1; i <= w; i++)
    q += (long long)C(w - 1, i - 1) * C(f + 1, i) % mod, q %= mod;
  printf("%I64d", (long long)p * calc(q, mod - 2) % mod);
  return 0;
}
