#include <bits/stdc++.h>
using namespace std;
long long BIGMOD(long long a, long long b, long long M) {
  if (b == 0) return 1 % M;
  long long x = BIGMOD(a, b / 2, M);
  x = (x * x) % M;
  if (b % 2 == 1) x = (x * a);
  return x % M;
}
int mod_plus(int a, int b) { return (a + b) % 1000000007; }
int mod_mul(long long a, long long b) { return (a * b) % 1000000007; }
int mod_div(int a, int b) {
  return mod_mul(a, BIGMOD(b, 1000000007 - 2, 1000000007));
}
int fact[200005];
int ncr(int n, int r) {
  return mod_div(fact[n], mod_mul(fact[r], fact[n - r]));
}
int cnt(int ghor, int manush) {
  if (ghor > manush) return 0;
  if (ghor == manush) return 1;
  if (!ghor) return 0;
  manush -= ghor;
  return ncr(ghor + manush - 1, ghor - 1);
}
int main() {
  int f, w, h;
  cin >> f >> w >> h;
  if (h == 0) {
    cout << 1 << endl;
    return 0;
  }
  if (w == 0) {
    cout << 1 << endl;
    return 0;
  }
  if (f == 0) {
    if (w > h)
      cout << 1 << endl;
    else
      cout << 0 << endl;
    return 0;
  }
  int tot = 0, i;
  fact[0] = 1;
  for (i = 1; i < 200005; i++) fact[i] = mod_mul(fact[i - 1], i);
  for (i = 1; i <= w; i++) {
    int tmp = cnt(i, w);
    tot = mod_plus(tot, mod_mul(2, mod_mul(tmp, cnt(i, f))));
    tot = mod_plus(tot, mod_mul(tmp, cnt(i - 1, f)));
    tot = mod_plus(tot, mod_mul(tmp, cnt(i + 1, f)));
  }
  int valid = 0;
  for (i = 1; i <= w; i++) {
    if ((long long)i * (h + 1) > w) break;
    int tmp = cnt(i, w - i * h);
    valid = mod_plus(valid, mod_mul(2, mod_mul(tmp, cnt(i, f))));
    valid = mod_plus(valid, mod_mul(tmp, cnt(i - 1, f)));
    valid = mod_plus(valid, mod_mul(tmp, cnt(i + 1, f)));
  }
  cout << mod_div(valid, tot) << endl;
  return 0;
}
