#include <bits/stdc++.h>
using namespace std;
template <int MOD>
class ModInt {
 public:
  ModInt() : value(0) {}
  ModInt(long long val) : value((int)(val < 0 ? MOD + val % MOD : val % MOD)) {}
  ModInt& operator+=(ModInt that) {
    value = value + that.value;
    if (value >= MOD) value -= MOD;
    return *this;
  }
  ModInt& operator-=(ModInt that) {
    value -= that.value;
    if (value < 0) value += MOD;
    return *this;
  }
  ModInt& operator*=(ModInt that) {
    value = (int)((long long)value * that.value % MOD);
    return *this;
  }
  ModInt& operator/=(ModInt that) { return *this *= that.inverse(); }
  ModInt operator+(ModInt that) const { return ModInt(*this) += that; }
  ModInt operator-(ModInt that) const { return ModInt(*this) -= that; }
  ModInt operator*(ModInt that) const { return ModInt(*this) *= that; }
  ModInt operator/(ModInt that) const { return ModInt(*this) /= that; }
  ModInt pow(long long k) const {
    if (value == 0) return 0;
    ModInt n = *this, res = 1;
    while (k) {
      if (k & 1) res *= n;
      n *= n;
      k >>= 1;
    }
    return res;
  }
  ModInt inverse() const {
    long long a = value, b = MOD, u = 1, v = 0;
    while (b) {
      long long t = a / b;
      a -= t * b;
      swap(a, b);
      u -= t * v;
      swap(u, v);
    }
    return ModInt(u);
  }
  int toi() const { return value; }

 private:
  int value;
};
ostream& operator<<(ostream& os, const ModInt<1000000007>& x) {
  os << x.toi();
  return os;
}
ModInt<1000000007> nPr(int n, int r, const vector<ModInt<1000000007> >& fact) {
  return fact[n] / fact[n - r];
}
ModInt<1000000007> nCr(int n, int r, const vector<ModInt<1000000007> >& fact) {
  return fact[n] / (fact[r] * fact[n - r]);
}
ModInt<1000000007> nHr(int n, int r, const vector<ModInt<1000000007> >& fact) {
  return nCr(n + r - 1, r, fact);
}
int f, w, h;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> f >> w >> h;
  h++;
  const int MA = 300000;
  vector<ModInt<1000000007> > fact(MA);
  fact[0] = 1;
  for (int(i) = (1); (i) < (int)(MA); ++(i)) fact[i] = fact[i - 1] * i;
  if (f == 0 || w < h) {
    if (f == 0) {
      cout << (w < h ? 0 : 1) << endl;
    } else if (w == 0) {
      cout << 1 << endl;
    } else {
      cout << 0 << endl;
    }
    return 0;
  }
  ModInt<1000000007> p = 0;
  for (int i = 1; h * i <= w; ++i) {
    int r = w - h * i;
    ModInt<1000000007> x = nCr(f + 1, i, fact) * nHr(i, r, fact);
    p += x;
  }
  ModInt<1000000007> q = fact[f + w] / (fact[f] * fact[w]);
  cout << p / q << endl;
}
