#include <bits/stdc++.h>
using std::cerr;
using std::endl;
const int N = 5050, P = 998244353;
inline int fpow(int x, int y) {
  int ret = 1;
  for (; y; y >>= 1, x = 1ll * x * x % P)
    if (y & 1) ret = 1ll * ret * x % P;
  return ret;
}
int n, m, K, p, q, fac[N], inv[N], S[N][N], ans, down[N];
inline int binom(int x, int y) {
  if (x < y) return 0;
  return 1ll * fac[x] * inv[y] % P * inv[x - y] % P;
}
int main() {
  std::cin >> n >> m >> K;
  fac[0] = 1;
  for (int i = 1; i < N; ++i) fac[i] = 1ll * fac[i - 1] * i % P;
  inv[N - 1] = fpow(fac[N - 1], P - 2);
  for (int i = N - 1; i; --i) inv[i - 1] = 1ll * inv[i] * i % P;
  down[0] = 1;
  for (int i = 1, j = n; i <= n && i <= K; ++i, --j)
    down[i] = 1ll * down[i - 1] * j % P;
  p = fpow(m, P - 2), q = 1 + P - p;
  if (n <= K) {
    for (int i = 0; i <= n; ++i)
      ans = (ans + 1ll * fpow(p, i) * fpow(q, n - i) % P * binom(n, i) % P *
                       fpow(i, K)) %
            P;
  } else {
    S[0][0] = 1;
    for (int i = 1; i < N; ++i) {
      for (int j = 1; j <= i; ++j)
        S[i][j] = (S[i - 1][j - 1] + 1ll * j * S[i - 1][j]) % P;
    }
    for (int i = 0; i <= K; ++i)
      ans = (ans + 1ll * S[K][i] * down[i] % P * fpow(p, i)) % P;
  }
  std::cout << ans << std::endl;
  return 0;
}
