#include <bits/stdc++.h>
using namespace std;
const long long P = 998244353, N = 2000, maxn = 2010;
long long fac[maxn], Inv[maxn];
long long Mul(long long x, long long y) { return 1LL * x * y % P; }
long long C(long long n, long long m) {
  return Mul(fac[n], Mul(Inv[m], Inv[n - m]));
}
long long Fast_Expon(long long x, long long y) {
  long long ans = 1;
  for (; y; y >>= 1, x = Mul(x, x))
    if (y & 1) ans = Mul(ans, x);
  return ans;
}
void before() {
  fac[0] = Inv[0] = 1;
  for (int i = 1; i <= N; i++) fac[i] = Mul(fac[i - 1], i);
  Inv[N] = Fast_Expon(fac[N], P - 2);
  for (int i = N - 1; i >= 1; i--) Inv[i] = Mul(Inv[i + 1], i + 1);
}
void init() {
  freopen("bricks.in", "r", stdin);
  freopen("bricks.out", "w", stdout);
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  before();
  cout << Mul(Mul(m, Fast_Expon(m - 1, k)), C(n - 1, k));
  return 0;
}
