#include <bits/stdc++.h>
using namespace std;
const int lp = 998244353;
const int maxn = 5007;
long long dp[maxn][maxn] = {0};
long long nu, de;
long long powmod(long long x, long long y, long long p) {
  if (y == 0) return 1;
  long long h = powmod(x, y / 2, p);
  if (y % 2) return ((h * h) % p * x) % p;
  return (h * h) % p;
}
long long inv(long long x, long long p) { return powmod(x, p - 2, p); }
long long add(int x, int y) { return (x + y) % lp; }
long long mul(int x, int y) { return (x * 1ll * y) % lp; }
int main() {
  long long n, m, k;
  cin >> n >> m >> k;
  de = powmod(m, n, lp);
  dp[0][0] = 1;
  for (int i = 0; i < k; i++) {
    for (int j = 0; j < k; j++) {
      dp[i + 1][j] = add(dp[i + 1][j], mul(dp[i][j], j));
      dp[i + 1][j + 1] = add(dp[i + 1][j + 1], mul(dp[i][j], n - j));
    }
  }
  nu = 0;
  for (int i = 1; i <= k; i++) {
    nu = add(nu, mul(dp[k][i], powmod(m, n - i, lp)));
  }
  cout << (nu * inv(de, lp)) % lp << endl;
}
