##define INF 0x7f7f7f ##define mem(a,b) memset(a , b , sizeof(a)) ##define FOR(i, x, n) for(int i = x;i <= n; i++) const ll mod = 1e9 + 7; // const int maxn = 100005;
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll FPM(ll x,ll power) { ll ans = 1; while(power) { if(power & 1) { ans = (ans % mod * x % mod) % mod; } x = (x % mod * x % mod) % mod; power >>= 1; } return ans % mod; }
ll C(ll m, ll n) { if(n * 2 > m) n = m - n; ll t = n; ll a = m, b = 1; ll ans = 1; while(t--) { ans = (ans % mod * (FPM(b, mod - 2) % mod * a % mod) % mod) % mod; a--; b++; } return ans % mod; }
voidsolve() { ll n, m, k; cin >> n >> m >> k; if(k == 1) { cout << "0"; return ; } if(k % 2 == 0) { if((n - k / 2) < 0 (m - k / 2) < 0) { cout << "0"; return ; } cout << ((2 * C(n - 1, k / 2 - 1) % mod) % mod * C(m - 1, k / 2 - 1) % mod) % mod; } else { ll a = 0, b = 0; if((n - (k + 1) / 2) >= 0 && (m - k / 2) >= 0) { a = (C(n - 1, (k + 1) / 2 - 1) % mod * C(m - 1, k / 2 - 1) % mod) % mod; } if((n - k / 2) >= 0 && (m - (k + 1) / 2) >= 0) { b = (C(n - 1, k / 2 - 1) % mod * C(m - 1, (k + 1) / 2 - 1) % mod) % mod; } cout << (a % mod + b % mod) % mod; } }