#include <bits/stdc++.h>
using namespace std;
class compare {
 public:
  bool operator()(pair<int, int> x, pair<int, int> y) {
    if (x.second == y.second) {
      return x.first < y.first;
    }
    return x.second < y.second;
  }
};
ostream &operator<<(ostream &os, const pair<long long, long long> &a) {
  os << a.first << " " << a.second;
}
pair<long long, long long> operator+(const pair<long long, long long> &a,
                                     const long long &b) {
  return {a.first + b, a.second + b};
}
pair<long long, long long> operator*(const pair<long long, long long> &a,
                                     const long long &b) {
  return {a.first * b, a.second * b};
}
pair<long long, long long> operator+(const pair<long long, long long> &a,
                                     const pair<long long, long long> &b) {
  return {a.first + b.first, a.second + b.second};
}
pair<long long, long long> operator-(const pair<long long, long long> &a,
                                     const pair<long long, long long> &b) {
  return {a.first - b.first, a.second - b.second};
}
pair<long long, long long> operator*(const pair<long long, long long> &a,
                                     const pair<long long, long long> &b) {
  return {a.first * b.first, a.second * b.second};
}
pair<long long, long long> operator%(const pair<long long, long long> &a,
                                     const pair<long long, long long> &b) {
  return {a.first % b.first, a.second % b.second};
}
int Set(int N, int pos) { return N = N | (1 << pos); }
int reset(int N, int pos) { return N = N & ~(1 << pos); }
bool check(int N, int pos) { return (bool)(N & (1 << pos)); }
int k;
int n, m;
long long bigmod(long long a, long long b) {
  if (b == 0) return 1;
  long long x = bigmod(a, b / 2);
  x = (x * x) % 998244353;
  if (b & 1) x = (a * x) % 998244353;
  return x;
}
long long dp[2005][2000];
long long ret(int id, long long cnt) {
  if (id == n + 1) {
    if (cnt == k)
      return 1;
    else
      return 0;
  }
  if (dp[id][cnt] != -1) return dp[id][cnt];
  long long val1, val2;
  val1 = ret(id + 1, cnt);
  val2 = ret(id + 1, cnt + 1);
  return dp[id][cnt] = (val1 + val2) % 998244353;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> k;
  memset(dp, -1, sizeof dp);
  if (k == 0) {
    cout << m << endl;
    return 0;
  }
  if (m == 1) {
    cout << 0 << endl;
    return 0;
  }
  if (n == 1) {
    cout << m << endl;
    return 0;
  }
  long long ans = 0;
  ans = ret(2, 0);
  ans = (ans * bigmod(m - 1, k)) % 998244353;
  ans = (ans * m) % 998244353;
  cout << ans << endl;
  return 0;
}
