#include <bits/stdc++.h>
const int MOD = 1000000007;
int dp[1001][1001];
int dpS[1001][1001];
int dpX[1001][1001];
int f(int, int);
int X(int n, int k) {
  if (n < 1) {
    return f(n, k);
  }
  if (dpX[n][k] != -1) return dpX[n][k];
  return dpX[n][k] = ((long long)n * f(n, k) + X(n - 1, k)) % MOD;
}
int S(int n, int k) {
  if (n < 1) return 0;
  if (dpS[n][k] != -1) return dpS[n][k];
  return dpS[n][k] = (f(n, k) + S(n - 1, k)) % MOD;
}
int f(int n, int k) {
  if (k == 0) {
    return n > 0;
  }
  if (n < 0 || k < 0) return 0;
  if (dp[n][k] != -1) return dp[n][k];
  return dp[n][k] = ((long long)(n - 1) * S(n - 2, k - 1) % MOD -
                     X(n - 2, k - 1) + MOD) %
                    MOD;
}
int main() {
  int x, y, k;
  memset(dp, -1, sizeof dp);
  memset(dpX, -1, sizeof dpX);
  memset(dpS, -1, sizeof dpS);
  scanf("%d %d %d", &x, &y, &k);
  printf("%d\n", (int)((long long)f(x, k) * f(y, k) % MOD));
  return 0;
}
