#include <bits/stdc++.h>
using namespace std;
const int P = (int)1e9 + 7;
const int M = (int)1e5 + 5;
int fact[M];
int Pow(int x, int k) {
  int rs = 1;
  while (k) {
    if (k & 1) rs = 1LL * rs * x % P;
    x = 1LL * x * x % P;
    k >>= 1;
  }
  return rs;
}
int C(int m, int n) {
  if (n < m) return 0;
  return 1LL * fact[n] * Pow(fact[m], P - 2) % P * Pow(fact[n - m], P - 2) % P;
}
int main() {
  int f, w, h, ans1 = 0, ans2 = 0;
  scanf("%d %d %d", &f, &w, &h);
  fact[0] = 1;
  for (int i = 1; i < M; i++) fact[i] = 1LL * fact[i - 1] * i % P;
  if (!f) {
    for (int b = 1; b <= w; b++) {
      ans1 = (ans1 + C(b - 1, w - 1)) % P;
      if (w >= h * b + b) ans2 = (ans2 + C(b - 1, w - h * b - 1)) % P;
    }
  } else if (!w)
    ans1 = ans2 = 1;
  else {
    for (int a = 1, b; a <= f; a++) {
      {
        b = a;
        ans1 = (ans1 + 2LL * C(a - 1, f - 1) * C(b - 1, w - 1) % P) % P;
      }
      if (a > 1) {
        b = a - 1;
        ans1 = (ans1 + 1LL * C(a - 1, f - 1) * C(b - 1, w - 1) % P) % P;
      }
      if (a < w) {
        b = a + 1;
        ans1 = (ans1 + 1LL * C(a - 1, f - 1) * C(b - 1, w - 1) % P) % P;
      }
    }
    for (int a = 1, b; a <= f; a++) {
      {
        b = a;
        if (w >= 1LL * h * b + b)
          ans2 =
              (ans2 + 2LL * C(a - 1, f - 1) * C(b - 1, w - h * b - 1) % P) % P;
      }
      if (a > 1) {
        b = a - 1;
        if (w >= 1LL * h * b + b)
          ans2 =
              (ans2 + 1LL * C(a - 1, f - 1) * C(b - 1, w - h * b - 1) % P) % P;
      }
      if (a < w) {
        b = a + 1;
        if (w >= 1LL * h * b + b)
          ans2 =
              (ans2 + 1LL * C(a - 1, f - 1) * C(b - 1, w - h * b - 1) % P) % P;
      }
    }
  }
  cout << 1LL * ans2 * Pow(ans1, P - 2) % P << endl;
  return 0;
}
