#include <bits/stdc++.h>
int f[100001 + 5], r[100001 + 5];
int C(int n, int m) {
  return 1LL * f[n] * r[m] % 1000000007 * r[n - m] % 1000000007;
}
int inv(int x) {
  int t = x, y = 1000000007 - 3;
  for (; y; t = 1LL * t * t % 1000000007, y >>= 1)
    if (y & 1) x = 1LL * x * t % 1000000007;
  return x;
}
int cal(int n, int m, int p) {
  if (!m) return 1;
  int r = 0, i;
  for (i = 1; i <= n + 1 && i * (p + 1) <= m; ++i)
    r = (r + 1LL * C(m - i * p - 1, i - 1) * C(n + 1, i)) % 1000000007;
  return r;
}
int main() {
  int n, m, p, i, x = 0, y = 0;
  for (f[0] = i = 1; i <= 100001; ++i) f[i] = 1LL * f[i - 1] * i % 1000000007;
  for (r[i = 100001] = inv(f[100001]); i--;)
    r[i] = 1LL * r[i + 1] * (i + 1) % 1000000007;
  scanf("%d%d%d", &n, &m, &p);
  printf("%d", 1LL * cal(n, m, p) * inv(cal(n, m, 0)) % 1000000007);
}
