// AOJ 2335
#include<iostream>
using namespace std;

typedef long long int number;

const number MOD = 1e9 + 7;
const int XMAX = 4e5 + 8;
number fact[XMAX], invfact[XMAX];
number N, M, K;

number pow(number a, number n) {
  if (n == 0) {
    return 1;
  } else if (n % 2 == 0) {
    number rt = pow(a, n / 2) % MOD;
    return rt * rt % MOD;
  } else {
    return pow(a, n - 1) * a % MOD;
  }
}

void construct_factorial(int n) {
  fact[0] = 1;
  for (int i = 1; i <= n; i++) {
    fact[i] = fact[i - 1] * i % MOD;
  }
  invfact[0] = 1;
  for (int i = 1; i <= n; i++) {
    invfact[i] = pow(fact[i], MOD - 2);
  }
}

number Comb(number n, number k) {
  return fact[n] * invfact[k] % MOD * invfact[n - k] % MOD;
}

number Uncomb(number n, number k) {
  return (Comb(n+k, k) + MOD - Comb(n+k, k-1)) % MOD;
}

number solve() {
  number ans = 0;
  for (number k = 0; k <= K; k++) {
    number j = K - k;
    ans += Uncomb(N+k, k) * Uncomb(M+j, j) % MOD * 
      Comb(N+M+2*K, N+2*k) % MOD;
    ans %= MOD;
  }
  return ans;
}

int main() {
  cin >> N >> M >> K;
  construct_factorial(4e5);
  cout << solve() << endl;
}