#include <bits/stdc++.h>
using namespace std;
int fa[1000111], inv[1000111];
int pv(int a, int b) {
  if (b == 0) return 1;
  long long r = pv(a, b / 2);
  r = r * r % 1000000007;
  if (b % 2) r = r * a % 1000000007;
  return r;
}
int C(int a, int b) {
  return fa[a] * 1ll * inv[a - b] % 1000000007 * inv[b] % 1000000007;
}
int split(int pl, long long it) {
  if (it < pl) return 0;
  it -= pl;
  return C(it + pl - 1, pl - 1);
}
int main() {
  ios::sync_with_stdio(false);
  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;
  }
  fa[0] = 1;
  for (int i = 1; i <= (f + w) * 3; i++)
    fa[i] = fa[i - 1] * 1ll * i % 1000000007;
  for (int i = 0; i <= (f + w) * 3; i++) inv[i] = pv(fa[i], 1000000007 - 2);
  int all = 0;
  int good = 0;
  for (int l = 1; l <= f + w; l++)
    for (int fi = 0; fi < 2; fi++) {
      int first = l / 2;
      int W = l / 2;
      if (l % 2) {
        if (fi)
          first++;
        else
          W++;
      }
      if (first > f) continue;
      if (W > w) continue;
      int mu = split(first, f);
      int al = split(W, w);
      int mg = split(W, w - W * 1ll * h);
      all = (all + mu * 1ll * al) % 1000000007;
      good = (good + mu * 1ll * mg) % 1000000007;
    }
  cout << good * 1ll * pv(all, 1000000007 - 2) % 1000000007 << endl;
  return 0;
}
