#include <bits/stdc++.h>
using namespace std;
const int MAXK = 5051;
const int P = 998244353;
int n, m, k;
long long p[MAXK];
long long s[MAXK][MAXK];
long long pwr(long long x, long long y) {
  long long ans = 1;
  while (y) {
    if (y & 1) ans = ans * x % P;
    x = x * x % P;
    y >>= 1;
  }
  return ans;
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  s[0][0] = 1;
  for (int i = 1; i <= k; i++) {
    for (int j = 1; j <= k; j++) {
      s[i][j] = (s[i - 1][j - 1] + s[i - 1][j] * j) % P;
    }
  }
  p[0] = 1;
  for (int i = 1; i <= k; i++) p[i] = p[i - 1] * (n - i + 1) % P;
  long long ans = 0;
  for (int j = 1; j <= k; j++) {
    ans = (ans + s[k][j] * p[j] % P * pwr(m, (P - 1 - j)) % P) % P;
  }
  printf("%lld\n", ans);
  return 0;
}
