#include <bits/stdc++.h>
inline long long read() {
  long long x = 0, f = 1;
  char c = getchar();
  for (; c > '9' || c < '0'; c = getchar()) {
    if (c == '-') f = -1;
  }
  for (; c >= '0' && c <= '9'; c = getchar()) {
    x = x * 10 + c - '0';
  }
  return x * f;
}
const int mod = 998244353;
int s[5005][5005];
inline int q_pow(int x, int t) {
  int s = 1;
  for (; t; t >>= 1) {
    if (t & 1) s = 1ll * s * x % mod;
    x = 1ll * x * x % mod;
  }
  return s;
}
inline void work() {
  int n = read(), m = read(), k = read(), p = q_pow(m, mod - 2), ans = 0;
  for (int i = 1; i <= k; i++) {
    for (int j = 0; j <= i; j++) {
      if (j <= 1)
        s[i][j] = j;
      else
        s[i][j] = (s[i - 1][j - 1] + 1ll * j * s[i - 1][j]) % mod;
    }
  }
  for (int i = 1, tmp = p, tmp2 = n; i <= std::min(n, k); i++) {
    ans += 1ll * s[k][i] * tmp % mod * tmp2 % mod;
    ans -= ans >= mod ? mod : 0;
    tmp = 1ll * tmp * p % mod;
    tmp2 = 1ll * tmp2 * (n - i) % mod;
  }
  printf("%d\n", ans);
}
int main() {
  work();
  return 0;
}
