#include <bits/stdc++.h>
using namespace std;
long long MOD = 998244353;
long long be(long long b, long long e, long long mod) {
  long long r = 1;
  while (e)
    if (e & 1)
      r = (r * b) % mod, e ^= 1;
    else
      b = (b * b) % mod, e /= 2;
  return r;
}
long long c[5010][5010];
long long inv[10004];
long long comb(long long x, long long y) {
  if (c[x][y] != 0) return c[x][y];
  if (y == 0 || y == x) {
    c[x][y] = 1;
    return 1;
  }
  c[x][y] = (comb(x - 1, y) + comb(x - 1, y - 1));
  if (c[x][y] > MOD) c[x][y] -= MOD;
  return c[x][y];
}
long long formula(long long n, long long m, long long k) {
  long long res = 0;
  for (int i = 0, ggdem = n + 1; i < ggdem; ++i) {
    long long t = (inv[n - i] * comb(n, i)) % MOD;
    t *= be(i, k, MOD);
    t %= MOD;
    res += t;
    res %= MOD;
  }
  return (res * be(m, (MOD - 2) * n, MOD)) % MOD;
}
long long prod(long long x, long long l, long long s) {
  long long res = 1;
  for (int i = 1, ggdem = l + 1; i < ggdem; ++i) {
    if (i == s) continue;
    res *= (x - i);
    res %= MOD;
    res += MOD;
    if (res > MOD) res -= MOD;
  }
  return res;
}
long long solve(long long n, long long m, long long k) {
  long long res = 0;
  for (int i = 1, ggdem = k + 2; i < ggdem; ++i) {
    long long t = be(prod(i, k + 1, i), MOD - 2, MOD);
    t *= prod(n, k + 1, i);
    t %= MOD;
    t *= formula(i, m, k);
    t %= MOD;
    res += t;
    res %= MOD;
  }
  return res;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n, m, k;
  cin >> n >> m >> k;
  for (int i = 0, ggdem = 10004; i < ggdem; ++i) inv[i] = be(m - 1, i, MOD);
  if (n <= k + 1)
    cout << formula(n, m, k);
  else
    cout << solve(n, m, k);
  return 0;
}
