#include class modint { public: static constexpr int mod = 998244353; int val; modint(void) : val(0) {} modint(int x) : val(x) {} modint operator+(const modint& other) const { return modint(val + other.val >= mod ? val + other.val - mod : val + other.val); } modint operator-(const modint& other) const { return modint(val < other.val ? val - other.val + mod : val - other.val); } modint operator*(const modint& other) const { return modint(val * (long long)(other.val) % mod); } }; modint frac[400005], inv[400005]; int n, m, k; int main() { scanf("%d%d%d", &n, &m, &k); k >>= 1; frac[0] = 1; for (int i = 1; i <= n + m; ++i) frac[i] = frac[i - 1] * i; inv[0] = inv[1] = 1; for (int i = 2; i <= n + m; ++i) inv[i] = inv[modint::mod % i] * (modint::mod - modint::mod / i); for (int i = 2; i <= n + m; ++i) inv[i] = inv[i - 1] * inv[i]; modint ans = frac[n + m - 2] * inv[n - 1] * inv[m - 1]; ans = ans * ans; // modint ans; // for (int i = 0; i <= n + m - 2; i += 2) // ans = ans + frac[n + m - 2] * inv[i >> 1] * inv[i >> 1] * inv[(n + m - 2 - i) >> 1] * inv[(n + m - 2 - i) >> 1]; int a = n - m; if (a < 0) a = -a; for (int i = 1; i * (k + k + 2) + a <= n + m - 2; ++i) { int b = i * (k + k + 2); modint delta = frac[n + m - 2] * inv[(n + m - 2 + a + b) >> 1] * inv[(n + m - 2 - a - b) >> 1] * frac[n + m - 2] * inv[(n + m - 2 + a - b) >> 1] * inv[(n + m - 2 - a + b) >> 1] * 2; if (i & 1) ans = ans - delta; else ans = ans + delta; } printf("%d\n", ans.val); return 0; }