#include <bits/stdc++.h>
using namespace std;
long long T[5005][5005];
long long powi(long long a, long long b) {
  if (!b) return 1;
  long long p = powi(a, b / 2);
  p = (p * p) % 998244353;
  if (b & 1) p = (p * a) % 998244353;
  return p;
}
long long mmi(long long x) { return powi(x, 998244353 - 2); }
int main() {
  int n, m, k;
  scanf("%d %d %d", &n, &m, &k);
  T[0][0] = 1;
  for (int i = 1; i <= k; i++)
    T[i][1] = 1, T[i][i] = (T[i - 1][i - 1] * i) % 998244353;
  for (int i = 3; i <= k; i++) {
    for (int j = 2; j < i; j++)
      T[i][j] = (T[i - 1][j] + T[i - 1][j - 1]) * j % 998244353;
  }
  long long ans = 0;
  for (int i = 1; i <= k; i++) {
    long long x = 1;
    for (int j = 0; j < i; j++) x = x * (n - j) % 998244353;
    x = (x * mmi(T[i][i])) % 998244353;
    x = (x * T[k][i]) % 998244353;
    x = (x * mmi(powi(m, i))) % 998244353;
    ans = (ans + x) % 998244353;
  }
  printf("%lld\n", ans);
  return 0;
}
