#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6;
const long long base = 998244353;
long long fac[MAXN];
long long tinhtohop(long long n, long long k) {
  long long t = 1LL;
  for (long long i = (n - k + 1); i <= (n); i++) t *= i, t %= base;
  return t;
}
long long pw(long long x, long long e) {
  if (e == 0) return 1;
  if (e == 1) return x;
  long long res = pw(x, e / 2);
  res = (res * res) % base;
  if (e & 1) res = (res * x) % base;
  return res;
}
long long inv(long long x) { return pw(x, base - 2); }
long long C(int nn, int kk) {
  long long res = fac[nn];
  res = (res * inv(fac[kk])) % base;
  res = (res * inv(fac[nn - kk])) % base;
  return res;
}
long long tinhsapxep(long long m, long long k) {
  long long t = m;
  for (long long i = (1); i <= (k); i++) t *= (m - 1), t %= base;
  return t;
}
void solve() {
  long long n, m, k;
  cin >> n >> m >> k;
  fac[0] = 1;
  for (int i = 1; i <= n; i++) fac[i] = (fac[i - 1] * i) % base;
  long long t1 = tinhsapxep(m, k);
  long long t2 = C(n - 1, k);
  cout << (t1 * t2) % base;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  solve();
  return 0;
}
