#include <bits/stdc++.h>
using namespace std;
long long g[200005];
const int mod = 1e9 + 7;
long long rev(long long x) {
  long long ret = 1;
  int y = mod - 2;
  while (y) {
    if (y % 2) ret = (ret * x) % mod;
    x = (x * x) % mod;
    y >>= 1;
  }
  return ret;
}
long long cal(int x, int y) {
  if (y == 0) return x == 0;
  int n = x + y - 1, m = y - 1;
  long long t1 = rev(g[n - m]);
  long long t2 = rev(g[m]);
  t1 = (t1 * t2) % mod;
  return (g[n] * t1) % mod;
}
int f, w, h;
int main() {
  g[0] = 1;
  for (int i = 1; i <= 200000; i++) g[i] = (g[i - 1] * i) % mod;
  cin >> f >> w >> h;
  long long p = 0, q = 0;
  for (int i = 1; i <= f + w; i++) {
    if (f >= i / 2 + i % 2 && w >= i / 2)
      q = (q + cal(f - i / 2 - i % 2, i / 2 + i % 2) * cal(w - i / 2, i / 2)) %
          mod;
    if (f >= i / 2 && w >= i / 2 + i % 2)
      q = (q + cal(f - i / 2, i / 2) * cal(w - i / 2 - i % 2, i / 2 + i % 2)) %
          mod;
    if (w / (h + 1) >= i / 2 + i % 2 && f >= i / 2)
      p = (p + cal(w - (i / 2 + i % 2) * (h + 1), i / 2 + i % 2) *
                   cal(f - i / 2, i / 2)) %
          mod;
    if (w / (h + 1) >= i / 2 && f >= i / 2 + i % 2)
      p = (p + cal(w - i / 2 * (h + 1), i / 2) *
                   cal(f - i / 2 - i % 2, i / 2 + i % 2)) %
          mod;
  }
  if (q == 0 || p == 0)
    cout << 0 << endl;
  else {
    long long ans = p;
    ans *= rev(q);
    ans %= mod;
    cout << ans << endl;
  }
}
