#include <bits/stdc++.h>
using namespace std;
const int N = 5005;
const int MOD = 998244353;
int n, m, k;
int fac[N], ifac[N];
int cn[N];
int p[N][N];
inline int mult(int first, int second) { return 1LL * first * second % MOD; }
inline int add(int first, int second) { return (first + second) % MOD; }
inline int sub(int first, int second) {
  int res = first - second;
  res += (res < 0) * MOD;
  return res;
}
inline int power(int first, int second) {
  if (!second) return 1;
  int tmp = power(first, second / 2);
  tmp = mult(tmp, tmp);
  if (second % 2) tmp = mult(first, tmp);
  return tmp;
}
inline int inv(int first) { return power(first, MOD - 2); }
inline int C(int first, int second) {
  return mult(fac[second], mult(ifac[first], ifac[second - first]));
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> k;
  fac[0] = 1;
  ifac[0] = 1;
  cn[0] = 1;
  for (int i = 1; i <= k; i++) {
    fac[i] = mult(fac[i - 1], i);
    ifac[i] = inv(fac[i]);
    cn[i] = mult(cn[i - 1], mult(inv(i), n - i + 1));
  }
  for (int i = 1; i <= k; i++) {
    p[i][0] = 1;
    for (int j = 1; j <= k; j++) {
      p[i][j] = mult(p[i][j - 1], i);
    }
  }
  int ans = 0;
  for (int i = 1; i <= k; i++) {
    int temp = 0;
    int sign = 1;
    for (int j = i; j > 0; j--) {
      temp = add(temp, mult(sign, mult(C(j, i), p[j][k])));
      sign = MOD - sign;
    }
    temp = mult(temp, cn[i]);
    temp = mult(temp, power(inv(m), i));
    ans = add(ans, temp);
  }
  cout << ans;
  return 0;
}
