#include <bits/stdc++.h>
using namespace std;
const int maxn = 200050;
const long long MOD = 998244353;
vector<int> idx;
long long fact[maxn], inv[maxn];
long long Pow(long long x, long long n) {
  long long ans = 1, base = x % MOD;
  n %= (MOD - 1);
  assert(n >= 0);
  while (n) {
    if (n & 1) ans = ans * base % MOD;
    base = base * base % MOD;
    n >>= 1;
  }
  return ans;
}
void init(int n) {
  fact[0] = 1;
  for (int i = 1; i <= n; ++i) fact[i] = fact[i - 1] * i % MOD;
  inv[n] = Pow(fact[n], MOD - 2);
  for (int i = n - 1; i >= 0; --i) inv[i] = inv[i + 1] * (i + 1) % MOD;
}
void rev(vector<int> &a, int n) {
  if (n != (int)idx.size()) {
    idx.assign(n, 0);
    for (int i = 0; i < n; ++i) idx[i] = (idx[i >> 1] >> 1) + (n / 2) * (i & 1);
  }
  for (int i = 0; i < n; ++i) {
    if (i < idx[i]) swap(a[i], a[idx[i]]);
  }
}
void fft(vector<int> &a, int n, int op = 1) {
  rev(a, n);
  for (int l = 2; l <= n; l <<= 1) {
    long long wn = Pow(3ll, (MOD - 1) / l);
    if (op == -1) wn = Pow(wn, MOD - 2);
    for (int i = 0; i < n; i += l) {
      long long w = 1;
      for (int k = i; k < i + (l / 2); ++k) {
        long long u = a[k], v = a[k + l / 2];
        a[k] = (u + v * w) % MOD;
        a[k + l / 2] = (u - v * w) % MOD;
        w = w * wn % MOD;
      }
    }
  }
  if (op == -1) {
    long long t = Pow(n, MOD - 2);
    for (int i = 0; i < n; ++i) a[i] = (long long)a[i] * t % MOD;
  }
}
int n, m, k;
vector<int> mul(vector<int> a, vector<int> b) {
  int N = 1;
  while (N <= (int)a.size() + (int)b.size() - 2) N <<= 1;
  a.resize(N), b.resize(N);
  fft(a, N), fft(b, N);
  for (int i = 0; i < N; ++i) a[i] = (long long)a[i] * b[i] % MOD;
  fft(a, N, -1);
  a.resize(k + 1);
  return a;
}
ostream &operator<<(ostream &out, vector<int> a) {
  for (auto e : a) out << e << " ";
  return out;
}
int main() {
  cin >> n >> m >> k;
  init(k);
  vector<int> a(k + 1);
  a[0] = m;
  for (int i = 1; i <= k; ++i) a[i] = inv[i];
  vector<int> A(1, 1), base(a);
  for (int i = 0; (1ll << i) <= n; ++i) {
    if ((n >> i) & 1) A = mul(A, base);
    base = mul(base, base);
  }
  long long ans = A[k];
  ans = ans * fact[k] % MOD * Pow(m, (long long)n * (MOD - 2)) % MOD;
  if (ans < 0) ans += MOD;
  cout << ans << endl;
  return 0;
}
