#include <bits/stdc++.h>
using std::cout;
using std::endl;
using std::max;
using std::min;
using std::sort;
int read() {
  int h = 0;
  char c = getchar();
  while (c < '0' || c > '9') c = getchar();
  while (c >= '0' && c <= '9') h = (h << 1) + (h << 3) + c - '0', c = getchar();
  return h;
}
const int p = 998244353;
int add(int x, int y) { return x + y >= p ? x + y - p : x + y; }
int sub(int x, int y) { return x - y >= 0 ? x - y : x - y + p; }
int ksm(long long x, int k) {
  long long anss = 1;
  while (k) {
    if (k & 1) anss = anss * x % p;
    x = x * x % p;
    k >>= 1;
  }
  return anss;
}
int n, m, K;
int f[5050][5050];
int ans;
int main() {
  n = read(), m = read(), K = read();
  f[0][0] = 1;
  for (int i = 1; i <= K; i++) {
    for (int j = 1; j <= i; j++) {
      f[i][j] = add(1ll * f[i - 1][j - 1] * (n - j + 1) % p,
                    1ll * f[i - 1][j] * j % p);
    }
  }
  int ivm = ksm(m, p - 2);
  for (int i = 1; i <= K; i++) {
    ans = add(ans, 1ll * ksm(ivm, i) * f[K][i] % p);
  }
  printf("%d\n", ans);
  return 0;
}
