#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
#pragma gcc optimize("O3")
#pragma gcc optimize("unroll-loops")
#pragma gcc target("avx2,see4")
#define chmin(a,b) a=min(a,b)
#define chmax(a,b) a=max(a,b)
#define rep(i,n) for(int i=0;i<n;i++)
#define mod 1000000007
#define mad(a,b) a=(a+b)%mod
#define X 300010
#define Y 10010
ll fac[X],ivf[X];
ll po(ll x,ll y){
	ll res=1;
	for(;y;y>>=1){
		if(y&1)res=res*x%mod;
		x=x*x%mod;
	}
	return res;
}
void init(){
	fac[0]=ivf[0]=1;
	for(ll i=1;i<X;i++){
		fac[i]=fac[i-1]*i%mod;
		ivf[i]=ivf[i-1]*po(i,mod-2)%mod;
	}
}
ll C(ll n,ll k){
	return fac[n]*ivf[n-k]%mod*ivf[k]%mod;
}
ll WAY(ll h,ll w){
	return C(h+w,w);	
}

ll N,M,K;
ll nf[Y],mf[Y];
ll dp[Y],cop[Y];
int main(){
	init();
	cin>>N>>M>>K;
	for(ll k=0;k<=K;k++)dp[k]=0; dp[0]=1;
	for(ll k=0;k<=K;k++){
		ll resn=0;
		for(ll i=0;i<=k;i++){
			mad(resn,dp[i]*WAY(N-1,k-i));
		}
		nf[k]=resn;
		ll resm=0;
		for(ll i=0;i<=k;i++)mad(resm,dp[i]*WAY(M-1,k-i));
		mf[k]=resm;
		
		for(ll i=0;i<=k;i++)cop[i]=dp[i]; cop[k+1]=0;
		for(ll i=1;i<=k+1;i++)mad(cop[i],cop[i-1]);
		for(ll i=0;i<=k+1;i++)dp[i]=cop[i];
	}
	ll ans=0;
	for(ll k=0;k<=K;k++){
		mad(ans,WAY(N+2*k,M+2*(K-k))*nf[k]%mod*mf[K-k]);
	}
	cout<<ans<<endl;
}


