#include <bits/stdc++.h>
using namespace std;
int inline mul(int A, int B) { return (1ll * A * B) % 1000000007; }
void inline add(int &A, int B) {
  A += B;
  if (A >= 1000000007) A -= 1000000007;
}
int n, m, h, p[200005];
int Pow(int a, int b) {
  if (b == 0) return 1;
  int x = Pow(a, b / 2);
  x = mul(x, x);
  if (b & 1) x = mul(x, a);
  return x;
}
int C(int NN, int KK) {
  if (NN < KK) return 0;
  int TS = p[NN];
  int MS = mul(p[KK], p[NN - KK]);
  return mul(TS, Pow(MS, 1000000007 - 2));
}
int Candy(int NN, int KK, int minCandy) {
  NN -= KK * minCandy;
  if (NN < 0) return 0;
  return C(NN + KK - 1, KK - 1);
}
int calcP() {
  int ans = 0;
  for (int i = 1; i <= 200005 - 1; i++) {
    if (i * h > m) break;
    add(ans, mul(Candy(n, i, 1), Candy(m, i, h + 1)));
    add(ans, mul(Candy(n, i, 1), Candy(m, i, h + 1)));
    add(ans, mul(Candy(n, i, 1), Candy(m, i + 1, h + 1)));
    add(ans, mul(Candy(n, i + 1, 1), Candy(m, i, h + 1)));
  }
  return ans;
}
int calcQ() { return Candy(m, n + 1, 0); }
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> h;
  if (m == 0 || h == 0) {
    cout << 1;
    return 0;
  }
  p[0] = 1;
  for (int i = 1; i <= 200005 - 1; i++) p[i] = mul(p[i - 1], i);
  int P = calcP();
  int Q = calcQ();
  cout << mul(P, Pow(Q, 1000000007 - 2));
}
