#include <iostream>
using namespace std;
using ll = long long int;

const ll MOD = 1000000007LL;
const ll S = 500000LL;
ll fact[S+10], finv[S+10];

ll mod_pow(ll X, ll N) {
    ll ret = 1;
    for(; N>0; N>>=1) {
        if(N & 1) (ret *= X) %= MOD;
        (X *= X) %= MOD;
    }
    return ret;
}

void init() {
    fact[0] = 1;

    for(ll i=1; i<=S; i++) {
        fact[i] = (fact[i-1] * i) % MOD;
    }

    finv[S] = mod_pow(fact[S], MOD-2);
    for(ll i=S; i>=1; i--) {
        finv[i-1] = (finv[i] * i) % MOD;
    }
}

ll nCr(int n, int r) {
    if(n < 0 || r < 0 || r > n) return 0;
    return (fact[n] * finv[n-r] % MOD) * finv[r] % MOD;
}

int main() {
    init();

    ll N, M, K; cin >> N >> M >> K;

    ll ans = 0;
    for(int d=0; d<=K; d++) {
        int l = K - d;

        int ud = N + 2*d, lr = M + 2*l;
        int u = ud - d, r = lr - l;

        ll mul = nCr(ud + lr, ud);
        ll sum_ud = nCr(ud, d);
        sum_ud = (sum_ud - nCr(ud, u+1) + MOD) % MOD;

        ll sum_lr = nCr(lr, r);
        sum_lr = (sum_lr - nCr(lr, r+1) + MOD) % MOD;

        (mul *= sum_ud) %= MOD;
        (mul *= sum_lr) %= MOD;
        (ans += mul) %= MOD;
        // printf("mul = %lld\n", mul);
    }
    cout << ans << endl;
    return 0;
}
