#include <bits/stdc++.h>
#pragma GCC optimize("Ofast", "unroll-loops", "omit-frame-pointer", "inline")
#pragma GCC option("arch=native", "tune=native", "no-zero-upper")
#pragma GCC target("avx2")
#pragma GCC optimize("03")
#pragma GCC target("sse4")
using namespace std;
long long dp[(long long)(5e3 + 5)][(long long)(5e3 + 5)];
long long qp(long long b, long long e) {
  if (!e) return 1;
  long long x = qp(b, e / 2);
  x = (x * x) % (long long)(998244353);
  if (e & 1) x = (x * b) % (long long)(998244353);
  return x;
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long n, m, k;
  cin >> n >> m >> k;
  dp[0][0] = 1;
  for (int i = 0; i < k; i++)
    for (int j = 0; j <= i; j++) {
      dp[i + 1][j] = (dp[i + 1][j] + dp[i][j] * j) % (long long)(998244353);
      dp[i + 1][j + 1] =
          (dp[i + 1][j + 1] + dp[i][j] * (n - j)) % (long long)(998244353);
    }
  long long res = 0;
  for (int i = 1; i <= k; i++)
    res = (res + dp[k][i] * qp(m, (long long)((long long)(998244353) - 2) *
                                      (long long)i)) %
          (long long)(998244353);
  cout << (res) << '\n';
  return 0;
}
