#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
const int M = 1e9 + 7;
int n, m, h;
int a[N], b[N], d[N], f[N], fi[N];
int bp(int a, int b) {
  int r = 1;
  while (b > 0) {
    if (b & 1) r = 1LL * r * a % M;
    a = 1LL * a * a % M;
    b /= 2;
  }
  return r;
}
int c(int n, int k) { return 1LL * f[n] * fi[n - k] % M * fi[k] % M; }
int main() {
  f[0] = fi[0] = 1;
  for (int i = 1; i < N; ++i) {
    f[i] = 1LL * f[i - 1] * i % M;
    fi[i] = bp(f[i], M - 2);
  }
  scanf("%d%d%d", &n, &m, &h);
  a[0] = n == 0 ? 1 : 0;
  b[0] = d[0] = (m == 0 ? 1 : 0);
  for (int i = 1; i <= n; ++i) a[i] = c(n - 1, i - 1);
  for (int i = 1; i <= m; ++i) {
    long long k = m - h * 1LL * i;
    if (k < i) continue;
    b[i] = c(k - 1, i - 1);
  }
  for (int i = 1; i <= m; ++i) d[i] = c(m - 1, i - 1);
  int p = 0, q = 0;
  for (int i = 1; i < N; ++i) {
    p = (p + 2LL * a[i] * b[i] % M) % M;
    q = (q + 2LL * a[i] * d[i] % M) % M;
  }
  for (int i = 0; i < N - 1; ++i) {
    if (i > 0) {
      p = (p + 1LL * a[i] * b[i - 1] % M) % M;
      q = (q + 1LL * a[i] * d[i - 1] % M) % M;
    }
    p = (p + 1LL * a[i] * b[i + 1] % M) % M;
    q = (q + 1LL * a[i] * d[i + 1] % M) % M;
  }
  int r = p * 1LL * bp(q, M - 2) % M;
  printf("%d\n", r);
  return 0;
}
