#include using namespace std; #define rep(i, n) for (int i = 0; i < (n); ++i) using ll = long long; using ull = unsigned long long; #include using mint = atcoder::modint998244353; int main() { cin.tie(nullptr)->sync_with_stdio(false); ll h, w, k; cin >> h >> w >> k; vector fact(h + w + 1, 1); for (int i = 1; i <= h + w; ++i) fact[i] = fact[i - 1] * i; vector factinv(h + w + 1, 1); factinv[h + w] = fact[h + w].inv(); for (int i = h + w; i > 0; --i) factinv[i - 1] = factinv[i] * i; auto C = [&](int n, int r) { return fact[n] * factinv[n - r] * factinv[r]; }; mint ans = 0; for (ll i = 1; i * i <= k; ++i) { if (k % i != 0) continue; for (ll he : { i, k / i }) { ll wi = k / he; if (he > h || wi > w) continue; ans += C(h, he) * C(w, wi); if (he == wi) break; } } cout << ans.val() << '\n'; return 0; }