#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
template <class T>
void Read(T &x) {
  char c;
  bool f = 0;
  while (c = getchar(), c != EOF)
    if (c == '-')
      f = 1;
    else if (c >= '0' && c <= '9') {
      x = c - '0';
      while (c = getchar(), c >= '0' && c <= '9') x = x * 10 + c - '0';
      ungetc(c, stdin);
      if (f) x = -x;
      return;
    }
}
inline int lowbit(int x) { return x & (-x); }
template <class T>
inline void arrUpdate(T *c, int x, T d, int N) {
  while (x <= N) {
    c[x] += d;
    x += lowbit(x);
  }
}
template <class T>
inline T arrGetsum(T *c, int x) {
  T ret = 0;
  while (x) {
    ret += c[x];
    x -= lowbit(x);
  }
  return ret;
}
int fac[500000 + 10], inv[500000 + 10], f, w, h;
inline int mypow(int x, int k) {
  int ret = 1;
  while (k) {
    if (k & 1) ret = 1LL * ret * x % 1000000007;
    x = 1LL * x * x % 1000000007;
    k >>= 1;
  }
  return ret;
}
inline int C(int n, int m) {
  if (n < m) return 0;
  return 1LL * fac[n] * inv[m] % 1000000007 * inv[n - m] % 1000000007;
}
inline int calcu(int tot, int cnt) {
  if (!cnt) return tot ? 0 : 1;
  return C(tot + cnt - 1, cnt - 1);
}
int main() {
  int a = 0, b = 0, l, r;
  Read(f), Read(w), Read(h);
  fac[0] = inv[0] = 1;
  for (int i = 1; i <= 500000; i++) {
    fac[i] = 1LL * fac[i - 1] * i % 1000000007;
    inv[i] = mypow(fac[i], 1000000007 - 2);
  }
  for (int i = 1; i <= f + w; i++) {
    l = (i + 1) >> 1, r = i >> 1;
    if (1LL * (h + 1) * l <= w && f >= r)
      (a += 1LL * calcu(w - (h + 1) * l, l) * calcu(f - r, r) % 1000000007) %=
          1000000007;
    if (l <= w && f >= r)
      (b += 1LL * calcu(w - l, l) * calcu(f - r, r) % 1000000007) %= 1000000007;
    swap(l, r);
    if (1LL * (h + 1) * l <= w && f >= r)
      (a += 1LL * calcu(w - (h + 1) * l, l) * calcu(f - r, r) % 1000000007) %=
          1000000007;
    if (l <= w && f >= r)
      (b += 1LL * calcu(w - l, l) * calcu(f - r, r) % 1000000007) %= 1000000007;
  }
  int ans = 1LL * a * mypow(b, 1000000007 - 2) % 1000000007;
  printf("%d\n", ans);
  return 0;
}
