#include <bits/stdc++.h>
using namespace std;
const long long mo = 1000000007;
long long k[200005];
void init() {
  k[0] = 1LL;
  for (long long i = 1LL; i <= 200000LL; i++) k[i] = (k[i - 1] * i) % mo;
}
long long lpow(long long a, long long b) {
  long long res = 1LL;
  while (b) {
    if (b & 1) res = (res * a) % mo;
    a = (a * a) % mo;
    b >>= 1;
  }
  return res % mo;
}
long long chu(long long a, long long b) { return (a * lpow(b, mo - 2LL)) % mo; }
long long n, m, h;
long long ans;
long long c(long long a, long long b) {
  long long res = chu(k[b], k[a]);
  res = chu(res, k[b - a]);
  return res % mo;
}
long long x1, x2, f, y11;
int main() {
  init();
  cin >> n >> m >> h;
  if (m == 0) {
    cout << 1 << endl;
    return 0;
  }
  if (m <= h) {
    cout << 0 << endl;
    return 0;
  }
  x1 = c(n, n + m);
  f = m / (h + 1LL);
  for (long long i = 1LL; i <= min(f, n + 1LL); i++) {
    x2 = c(i, n + 1LL);
    x2 = (x2 * c(i - 1LL, m - i * h - 1LL)) % mo;
    y11 = (y11 + x2) % mo;
  }
  ans = chu(y11, x1);
  cout << ans << endl;
}
