#include <bits/stdc++.h>
using namespace std;
long long MD = 1000000007;
long long f, w, h;
long long fac[100005];
long long pow(long long a, long long b) {
  if (!b) return 1;
  if (b % 2) return (a * pow((a * a) % MD, b / 2)) % MD;
  return pow((a * a) % MD, b / 2);
}
long long inv(long long a) { return pow(a, MD - 2); }
long long choose(long long a, long long b) {
  return (((fac[a] * inv(fac[b])) % MD) * inv(fac[a - b])) % MD;
}
long long p, q;
long long cnt1(long long fs, long long ws) {
  if (fs > f || ws > w) return 0ll;
  long long ret = 1;
  if (fs == ws) ret = 2;
  ret *= choose(f - 1, fs - 1);
  ret %= MD;
  ret *= choose(w - 1, ws - 1);
  ret %= MD;
  return ret;
}
long long cnt2(long long fs, long long ws) {
  if (fs > f || ws * h > w) return 0ll;
  long long ret = 1;
  if (fs == ws) ret = 2;
  ret *= choose(f - 1, fs - 1);
  ret %= MD;
  ret *= choose(w - 1 - ws * (h - 1), ws - 1);
  ret %= MD;
  return ret;
}
int main() {
  ios::sync_with_stdio(false);
  fac[0] = 1;
  for (long long i = 1; i <= 100000; i++) fac[i] = ((fac[i - 1] * i) % MD);
  cin >> f >> w >> h;
  if (w == 0) {
    cout << 1 << endl;
    return 0;
  }
  if (f == 0) {
    cout << (w > h ? 1 : 0) << endl;
    return 0;
  }
  h++;
  for (long long i = 1; i <= f; i++) {
    p += cnt1(i, i);
    q += cnt2(i, i);
  }
  for (long long i = 1; i <= f; i++) {
    p += cnt1(i, i + 1);
    q += cnt2(i, i + 1);
  }
  for (long long i = 1; i <= w; i++) {
    p += cnt1(i + 1, i);
    q += cnt2(i + 1, i);
  }
  p %= MD;
  q %= MD;
  cout << (q * inv(p)) % MD << endl;
}
