#include <bits/stdc++.h>
using namespace std;
const int N = 5050;
const int MOD = 998244353;
int f[N], rf[N];
int sum(int a, int b) { return (a + b) % MOD; }
int mult(int a, int b) { return (a * 1LL * b) % MOD; }
int bin_pow(int a, int n) {
  int res = 1;
  for (; n; n >>= 1, a = mult(a, a))
    if (n & 1) res = mult(res, a);
  return res;
}
int inv(int a) { return bin_pow(a, MOD - 2); }
int C(int n, int k) {
  if (k < 0 || k > n) return 0;
  return mult(f[n], mult(rf[k], rf[n - k]));
}
int pw(int n) {
  if (n & 1) return MOD - 1;
  return 1;
}
int main() {
  int n, m, k;
  scanf("%d %d %d", &n, &m, &k);
  m = inv(m);
  f[0] = 1;
  for (int i = 1; i <= k; ++i) f[i] = mult(f[i - 1], i);
  rf[k] = inv(f[k]);
  for (int i = k; i > 0; --i) rf[i - 1] = mult(rf[i], i);
  int ans = 0;
  for (int s = 1; s <= min(n, k); ++s) {
    int fs = 0;
    for (int t = 1; t <= s; ++t)
      fs = sum(fs, mult(pw(s - t), mult(bin_pow(t, k), C(s, t))));
    for (int i = n; i > n - s; --i) fs = mult(fs, i);
    fs = mult(fs, rf[s]);
    ans = sum(ans, mult(bin_pow(m, s), fs));
  }
  printf("%d\n", ans);
}
