#include <bits/stdc++.h>
using namespace std;
long long mod_pow(long long x, long long a, long long m = 1000000007) {
  if (a == 0) return 1;
  long long res = mod_pow(x, a / 2, m);
  res = res * res % m;
  if (a % 2) res *= x;
  return res % m;
}
long long inv(long long x, long long m = 1000000007) {
  return mod_pow(x, m - 2, m);
}
long long fact[10800000];
long long revfact[10800000];
long long rev[10800000];
void init() {
  long long m = 1000000007;
  fact[0] = 1;
  revfact[0] = 1;
  rev[0] = 0;
  rev[1] = 1;
  for (int i = 1; i < 10800000; i++) {
    fact[i] = fact[i - 1] * i % m;
    if (i > 1)
      rev[i] = 1000000007 / i * (1000000007 - rev[1000000007 % i]) % 1000000007;
    revfact[i] = revfact[i - 1] * rev[i] % 1000000007;
  }
}
long long nCk(long long n, long long k) {
  if (n < k) return 0;
  return fact[n] * revfact[n - k] % 1000000007 * revfact[k] % 1000000007;
}
int main() {
  init();
  long long h, w, k, res = 0;
  cin >> h >> w >> k;
  for (int i = 0; i <= h; i++) {
    int j = k - i;
    if (j < 0 || j > w) continue;
    long long tmp = 0;
    tmp += (k + 1) * rev[3] % 1000000007 * i % 1000000007 * j % 1000000007;
    tmp %= 1000000007;
    tmp += (k + 1) * rev[2] % 1000000007 * (k) % 1000000007;
    tmp %= 1000000007;
    tmp += k;
    tmp %= 1000000007;
    tmp *= nCk(h, i) * nCk(w, j) % 1000000007;
    tmp %= 1000000007;
    res = (res + tmp) % 1000000007;
  }
  for (int i = 1; i <= k; i++) (res *= i) %= 1000000007;
  cout << res << endl;
  return 0;
}
