#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int add(int a, int b) {
  int ret = a + b;
  if (ret >= 1000000007) ret -= 1000000007;
  return ret;
}
int mul(int a, int b) {
  long long ret = 1LL * a * b;
  if (ret >= 1000000007) ret %= 1000000007;
  return ret;
}
int fact[N], ifact[N];
int fp(int b, int e) {
  if (e == 0) return 1;
  if (e == 1) return b;
  int ret = fp(b, e / 2);
  ret = mul(ret, ret);
  if (e % 2) ret = mul(ret, b);
  return ret;
}
int F(int n, int k) {
  if (k <= 0) return 0;
  n -= k;
  if (n < 0) return 0;
  int ret = fact[n + k - 1];
  ret = mul(ret, ifact[k - 1]);
  ret = mul(ret, ifact[n]);
  return ret;
}
int main() {
  fact[0] = ifact[0] = 1;
  for (int i = 1; i < N; i++) {
    fact[i] = mul(fact[i - 1], i);
    ifact[i] = mul(ifact[i - 1], fp(i, 1000000007 - 2));
  }
  int num = 0;
  int den = 0;
  int f, w, h;
  cin >> f >> w >> h;
  if (w == 0) {
    cout << 1 << endl;
    return 0;
  }
  if (f == 0) {
    if (w > h)
      cout << 1 << endl;
    else
      cout << 0 << endl;
    return 0;
  }
  if (h == 0) {
    cout << 1 << endl;
    return 0;
  }
  for (long long int r = 1; r <= w; r++) {
    if (1LL * r * h <= 1LL * w) {
      int tans = F(w - r * h, r);
      int t2 = mul(2, F(f, r));
      t2 = add(t2, add(F(f, r - 1), F(f, r + 1)));
      tans = mul(tans, t2);
      num = add(num, tans);
    }
    int tans = F(w, r);
    int t2 = mul(2, F(f, r));
    t2 = add(t2, add(F(f, r - 1), F(f, r + 1)));
    tans = mul(tans, t2);
    den = add(den, tans);
  }
  num = mul(num, fp(den, 1000000007 - 2));
  cout << num << endl;
  return 0;
}
