#include <bits/stdc++.h>
using namespace std;
const long long maxn = 10000010;
const long long mod = 998244353;
inline long long power(long long a, long long t) {
  long long res = 1;
  while (t) {
    if (t & 1) res = res * a % mod;
    a = a * a % mod;
    t >>= 1;
  }
  return res;
}
int n, m, k, cnt, f[maxn], inv[maxn], pw[maxn], pr[maxn], c[maxn];
int main() {
  scanf("%d %d %d", &n, &m, &k);
  m = power(m, mod - 2);
  c[0] = inv[1] = pw[1] = 1;
  c[1] = n;
  for (long long i = 2; i <= k; ++i) {
    inv[i] = (mod - mod / i) * inv[mod % i] % mod;
    c[i] = 1ll * c[i - 1] * inv[i] % mod * (n - i + 1) % mod;
    if (!pw[i]) {
      pr[++cnt] = i;
      pw[i] = power(i, k);
    }
    for (long long j = 1; j <= cnt && i * pr[j] <= k; ++j) {
      pw[i * pr[j]] = 1ll * pw[i] * pw[pr[j]] % mod;
      if (i % pr[j] == 0) break;
    }
  }
  if (n <= k + 1) {
    long long mul = power(mod + 1 - m, n - 1) * m % mod,
              invq = power(mod + 1 - m, mod - 2), res = 0;
    for (int i = 1; i <= n; ++i) {
      res = (res + mul * c[i] % mod * pw[i]) % mod;
      mul = mul * invq % mod * m % mod;
    }
    printf("%lld", res);
  } else {
    long long c2, mul, res = 0;
    mul = c2 = f[k] = 1;
    for (int i = k - 1; i; --i) {
      c2 = c2 * (n - i - 1) % mod * inv[k - i] % mod;
      mul = mul * (mod - m) % mod;
      f[i] = (c2 * mul + (mod + 1 - m) * f[i + 1]) % mod;
    }
    mul = m;
    for (int i = 1; i <= k; ++i) {
      res = (res + 1ll * pw[i] * c[i] % mod * mul % mod * f[i]) % mod;
      mul = mul * m % mod;
    }
    printf("%lld", res);
  }
  return 0;
}
