#include <bits/stdc++.h>
using namespace std;
const long long M = 998244353;
long long power(long long a, long long b) {
  long long res = 1;
  a %= M;
  while (b) {
    if (b & 1) res = res * a % M;
    a = a * a % M;
    b >>= 1;
  }
  return res;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long n, m, k;
  cin >> n >> m >> k;
  m = power(m, M - 2);
  vector<long long> fact(k + 1, 1), inv(k + 1);
  for (long long i = 1; i <= k; ++i) {
    fact[i] = i * fact[i - 1] % M;
  }
  inv[k] = power(fact[k], M - 2);
  for (long long i = k - 1; i >= 0; --i) {
    inv[i] = inv[i + 1] * (i + 1) % M;
  }
  vector<long long> pk(k + 1);
  for (long long i = 0; i <= k; ++i) {
    pk[i] = power(i, k) % M;
  }
  long long ans = 0, tm = m;
  vector<long long> nd(k + 1);
  nd[1] = n;
  for (long long d = 2; d <= k; ++d) {
    nd[d] = nd[d - 1] * (n - d + 1) % M;
    nd[d] = nd[d] * power(d, M - 2) % M;
  }
  for (long long d = 1; d <= k; ++d) {
    long long tmp = tm * nd[d] % M;
    long long res = 0;
    long long cnt = 1;
    for (long long i = d; i >= 0; --i) {
      long long dci = fact[d] * inv[d - i] % M * inv[i] % M;
      res = (res + cnt * pk[i] % M * dci % M + M) % M;
      cnt = -cnt;
    }
    tmp = (tmp * res % M);
    ans = (ans + tmp + M) % M;
    tm = (m * tm) % M;
  }
  cout << ans << endl;
  return 0;
}
