#include <bits/stdc++.h>
using namespace std;
long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - 48, ch = getchar();
  return x * f;
}
const long long N = 5005;
const long long mod = 998244353;
long long S[N][N];
long long n, m, k;
long long down[N], p[N];
long long qpow(long long x, long long y) {
  long long mul = 1;
  for (; y; y >>= 1) {
    if (y & 1) mul = mul * x % mod;
    x = x * x % mod;
  }
  return mul;
}
signed main() {
  n = read();
  m = read();
  k = read();
  S[0][0] = 1;
  for (long long i = 1; i <= k; ++i)
    for (long long j = 1; j <= i; ++j)
      S[i][j] = (S[i - 1][j - 1] + S[i - 1][j] * j % mod) % mod;
  down[0] = 1;
  long long mul = qpow(m, mod - 2);
  p[0] = 1;
  for (long long i = 1; i <= k; ++i) {
    down[i] = down[i - 1] * (n - i + 1) % mod;
    p[i] = p[i - 1] * mul % mod;
  }
  long long ans = 0;
  for (long long i = 0; i <= k; ++i) {
    ans += S[k][i] * down[i] % mod * p[i] % mod;
    ans %= mod;
  }
  cout << ans;
}
