#include <iostream>
using namespace std;

long long n, m, k, t = 0;
long long p[200001], q[200001], r[200001];
const long long M = 998244353;

long long pow(long long a, long long b) {
	long long w = 1, x = a;

	while (b) {
		if (b & 1)
			w = w * x % M;

		x = x * x % M;
		b >>= 1;
	}

	return w;
}

int main()
{
	cin >> n >> m >> k;

	p[0] = 1;
	q[0] = 1;
	r[0] = 1;

	for (long long i = 1; i < n; i++) {
		p[i] = p[i - 1] * i % M;
		q[i] = pow(p[i], M - 2);
		r[i] = r[i - 1] * (m - 1) % M;
	}
	
	for (long long j = 0; j <= k; j++) {
		long long s = m;

		s = (((s * p[n - 1] % M) * q[j] % M) * q[n - j - 1] % M) * r[n - j - 1] % M;
		t = (t + s) % M;
	}

	cout << t << endl;
}
