#include <bits/stdc++.h>
using namespace std;
const int N = 201000;
const int MOD = 1000000007;
long long fac[N], inv[N];
inline long long pow(long long x, int y) {
  long long ans = 1;
  while (y) {
    if (y & 1) ans = ans * x % MOD;
    y >>= 1;
    x = x * x % MOD;
  }
  return ans;
}
long long C(int n, int m) {
  if (n < m) return 0;
  return fac[n] * inv[m] % MOD * inv[n - m] % MOD;
}
inline void init(int n) {
  fac[0] = 1;
  for (int i = 1; i <= n; ++i) fac[i] = fac[i - 1] * i % MOD;
  inv[n] = pow(fac[n], MOD - 2);
  for (int i = n - 1; i >= 0; --i) inv[i] = inv[i + 1] * (i + 1) % MOD;
}
int main() {
  int w, f, h, n;
  long long ans = 0;
  scanf("%d%d%d", &f, &w, &h);
  n = w + f;
  if (w == 0) {
    printf("1\n");
    return 0;
  }
  init(n);
  for (int i = 1; i * (h + 1) <= w; ++i)
    ans = (ans + C(f + 1, i) * C(w - i * h - 1, i - 1)) % MOD;
  printf("%lld\n", ans * pow(C(n, w), MOD - 2) % MOD);
  return 0;
}
