#include <bits/stdc++.h>
using namespace std;
int const INF = (int)1e9 + 1e3;
long long const INFL = (long long)1e18 + 1e6;
mt19937 tw(9450189);
uniform_int_distribution<long long> ll_distr;
long long rnd(long long a, long long b) {
  return ll_distr(tw) % (b - a + 1) + a;
}
const int MOD = 998244353;
int mult(int a, int b) { return (long long)a * b % MOD; }
int mpow(int a, int b) {
  int ret = 1;
  while (b) {
    if (b & 1) {
      ret = mult(ret, a);
    }
    a = mult(a, a);
    b >>= 1;
  }
  return ret;
}
int inv(int num) { return mpow(num, MOD - 2); }
int factorial(int n) {
  int ret = 1;
  for (int i = 1; i <= n; ++i) {
    ret = mult(ret, i);
  }
  return ret;
}
int cnk(int n, int k) {
  return mult(factorial(n), mult(inv(factorial(k)), inv(factorial(n - k))));
}
void solve() {
  int n, m, k;
  cin >> n >> m >> k;
  cout << mult(cnk(n + k - k - 1, k), mult(m, mpow(m - 1, k))) << "\n";
}
int main() {
  cout << setprecision(15) << fixed;
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int test_count = 1;
  for (int test = 1; test <= test_count; ++test) {
    solve();
  }
}
