#include <algorithm>
#include <iostream>

using namespace std;

const int MD = 1000000007;

long long inv(int n) {
	return n == 1 ? 1 : inv(n - MD % n) * (MD / n + 1) % MD;
}

long long choose(int n, int k) {
	return n < k ? 0 : k == 0 ? 1 : choose(n - 1, k - 1) * n % MD * inv(k) % MD;
}

int main() {
	int n, m, k; cin >> n >> m >> k;
	if (n - m >= k + 1) {
		cout << "0\n";
		return 0;
	}
	int ans = choose(n + m, n) - choose(n + m, n + (k + 1 - (n - m)));
	if (ans < 0)
		ans += MD;
	cout << ans << '\n';
	return 0;
}

#include <bits/stdc++.h>
//#include <atcoder/all>
using namespace std;
//using namespace atcoder;
using ll=long long;
using ld=long double;
using pll=pair<ll, ll>;
//using mint = modint1000000007;
#define rep(i,n) for (ll i=0; i<n; ++i)
#define all(c) begin(c),end(c)
#define PI acos(-1)
#define oo 2e18
template<typename T1, typename T2>
bool chmax(T1 &a,T2 b){if(a<b){a=b;return true;}else return false;}
template<typename T1, typename T2>
bool chmin(T1 &a,T2 b){if(a>b){a=b;return true;}else return false;}
//priority_queue<ll, vector<ll>, greater<ll>> Q;
// LMAX = 18446744073709551615 (1.8*10^19)
// IMAX = 2147483647 (2.1*10^9)
/*

*/
//nCk
const ll MAX = 2000010;
const ll MOD = 1000000007;

long long fac[MAX], finv[MAX], inv[MAX];

void COMinit(){
  fac[0] = fac[1]=1;
  finv[0] = finv[1]=1;
  inv[1] = 1;
  for(int i=2; i<MAX; i++){
    fac[i] = fac[i-1] * i % MOD;
    inv[i] = MOD-inv[MOD%i] * (MOD/i) % MOD;
    finv[i] = finv[i-1] * inv[i] % MOD;//逆元の階上
  }
}

ll COM(int n, int k){
  if(n==0 || k==0) return 1;
  if (n<k)
    return 0;
  if (n<0 || k<0)
    return 0;
  return fac[n] * (finv[k] * finv[n-k] % MOD) % MOD;
}

//modpow
ll modpow(ll a, ll n){//a^n
  if (n == 0) return 1;
  if (n == 1) return a % MOD;
  if (n%2 == 1) return (a * modpow(a, n - 1)) % MOD;
  else {
    ll t = modpow(a, n / 2) % MOD;
    return (t * t) % MOD;
  }
}

int main(){
  cin.tie(0);
  ios::sync_with_stdio(0);
  COMinit();
  ll N, M, K;
  cin >> N >> M >> K;
  if (M+K<N){
    cout << 0 << endl;
    return 0;
  }
  ll total = COM(N+M, N);
//  cout << total << endl;
  ll cnt = 0;
  for(ll i=K; i<N+M; i+=2){ // 左側の総数
    ++cnt;
    if (N < K+cnt) break;
    total -= (((COM(i, K+cnt-1) * (K+1))%MOD * modpow(K+cnt, MOD-2))%MOD  * COM(N+M - (i+1), M-(cnt-1)))%MOD;
//    cout << "total:" << total <<" i:" << i << " K+cnt-1:" << K+cnt-1 << " N+M-(i+1):" << N+M - (i+1) << " M-(cnt-1):" << M-(cnt-1) << endl;
    total += MOD;
    total %= MOD;
  }
  cout << total << endl;
}