#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>
using namespace std;
#define deb(k) cerr << #k << ": " << k << "\n";
#define size(a) (int)a.size()
#define fastcin cin.tie(0)->sync_with_stdio(0);
#define st first
#define nd second
#define pb push_back
#define mk make_pair
#define int long long
typedef long double ldbl;
typedef double dbl;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef map<int, int> mii;
typedef vector<int> vint;
#define MAX 4000100
#define MAXLG 20
const int inf = 0x3f3f3f3f;
const ll mod = 1000000007;
const ll linf = 0x3f3f3f3f3f3f3f3f;
const int N = 300100;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

ll fat[MAX+100];
ll ifat[MAX+100];

ll power(ll x, ll y, ll p){
  ll res = 1;
  x = x % p;
  while (y > 0){
    if (y & 1) res = (res*x) % p;
    y = y>>1;
    x = (x*x) % p;
  }
  return res;
}

void init(){
	fat[0] = 1;
	for(ll i=1;i<=MAX;i++){
	  fat[i] = (fat[i-1]*i)%mod;
	}
	ifat[MAX] = power(fat[MAX], mod-2, mod);
	for(ll i=MAX-1;i>=0;i--) ifat[i] = (ifat[i+1]*(i+1))%mod;
}

ll choose(int x, int y){
	if(y < 0 || y > x || x < 0) return 0;
	return fat[x]*(ifat[y]*ifat[x-y]%mod)%mod;
}

void solve(){
	init();
	int n, m, k;
	cin>>n>>m>>k;
	if(n > m + k){
		cout<<"0\n";
		return;
	}

	int ans = choose(n+m, n);
	for(int i=k+1;i<=n;i++){
		int j = i - k - 1;
		int l = j;
		int a = k, b = 0;
		int aux = (choose(2*l + a - b, l) - choose(2*l + a - b, l - 1)) * choose(n+m-i-j, n-i) % mod;
		ans -= aux;
		ans %= mod;
	}
	ans = (ans + mod) % mod;
	cout<<ans<<"\n";



	// Have you read the problem again?
	// Maybe you understood the wrong problem
}

int32_t main(){
	fastcin;
	int t_ = 1;
	//cin>>t_;
	while(t_--)
		solve();
	return 0;
}
