#include using namespace std; using ll = long long; const ll MOD = 998244353; ll qpow(ll a, ll b) { a %= MOD; ll ret = 1; while (b) { if (b & 1) ret = ret * a % MOD; a = a * a % MOD; b >>= 1; } return ret; } const int N = 4e5 + 5; ll fact[N], inv[N]; ll C(int m, int n) { if (n > m) return 0; if (n < 0 || m < 0) return 0; return fact[m] * inv[n] % MOD * inv[m - n] % MOD; } ll calc(ll m, ll d) { ll l = -(m + 2 * d + 2) / (2 * d + 2) - 2; ll r = (m + 2 * d + 2) / (2 * d + 2) + 2; ll ans = 0; for (int k = l; k <= r; k++) { ans = ((ans + C(2 * m, m + k * (2 * d + 2))) % MOD - C(2 * m, m + d + 1 + k * (2 * d + 2)) + MOD) % MOD; } return ans; } int main() { fact[0] = 1; for (int i = 1; i < N; i++) fact[i] = fact[i - 1] * i % MOD; inv[N - 1] = qpow(fact[N - 1], MOD - 2); for (int i = N - 2; i >= 0; i--) inv[i] = inv[i + 1] * (i + 1) % MOD; int h, w, k; cin >> h >> w >> k; if (k == 0) { cout << C(h + w - 2, h - 1); return 0; } if (k / 2 > min(h - 1, w - 1)) { cout << C(h + w - 2, h - 1) * C(h + w - 2, h - 1) % MOD; return 0; } ll ans = 0; for (int m = 0; m <= min(h - 1, w - 1); m++) { ans = (ans + C(h + w - 2, 2 * m) * C(h + w - 2 - 2 * m, h - 1 - m) % MOD * calc(m, k / 2) % MOD) % MOD; } cout << ans; return 0; }