#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
const int module = 1e9 + 7;
int f, w, h;
long long fac[N], inv[N];
long long power(int a, int p) {
  long long ret = 1, base = a;
  while (p) {
    if (p & 1) ret = ret * base % module;
    base = base * base % module;
    p >>= 1;
  }
  return ret;
}
void _pre() {
  fac[0] = 1;
  for (int i = 1; i < N; i++) fac[i] = fac[i - 1] * i % module;
  inv[N - 1] = power(fac[N - 1], module - 2);
  for (int i = N - 2; i >= 0; i--) inv[i] = inv[i + 1] * (i + 1) % module;
}
long long C(int n, int m) {
  return fac[n] * inv[m] % module * inv[n - m] % module;
}
int main() {
  scanf("%d%d%d", &f, &w, &h);
  if (f == 0) {
    puts(w > h ? "1" : "0");
    return 0;
  }
  if (w == 0) {
    puts("1");
    return 0;
  }
  _pre();
  long long tot = 0, valid = 0;
  for (int i = 2; i <= f + w; i++) {
    if (w >= i / 2 && f >= i - i / 2) {
      int wd = i / 2, fd = i - i / 2;
      tot = (tot + C(w - 1, wd - 1) * C(f - 1, fd - 1) % module) % module;
      if (w >= 1LL * (h + 1) * wd) {
        valid =
            (valid + C(w - h * wd - 1, wd - 1) * C(f - 1, fd - 1) % module) %
            module;
      }
    }
    if (w >= i - i / 2 && f >= i / 2) {
      int wd = i - i / 2, fd = i / 2;
      tot = (tot + C(w - 1, wd - 1) * C(f - 1, fd - 1) % module) % module;
      if (w >= 1LL * (h + 1) * wd) {
        valid =
            (valid + C(w - h * wd - 1, wd - 1) * C(f - 1, fd - 1) % module) %
            module;
      }
    }
  }
  cout << valid * power(tot, module - 2) % module << endl;
  return 0;
}
