MOD = 998244353

n, m, k = list(map(int, input().split()))

 

fact = [0]*(n+1)

fact[0] = 1

for i in range(1, n+1):

    fact[i] = fact[i-1]*i % MOD

 

invfact = [0]*(n+1)

for i in range(n+1):

    invfact[i] = pow(fact[i], MOD-2, MOD)

 

 

def nCk(n, k):

    return fact[n]*invfact[k]*invfact[n-k]

 

 

ans = 0

for i in range(k+1):

    ans += m*pow(m-1, n-1-i, MOD)*nCk(n-1, i)

    ans %= MOD

print(ans)
import sys

 

input = sys.stdin.readline

 

def comb(n, r):

    return (fact[n] * revfact[n-r] * revfact[r]) % mod

 

mod = 998244353

N, M, K = list(map(int, input().split()))

 

fact = [1] * (N + 1)

for i in range(1, N + 1):

    fact[i] = (fact[i-1] * i) % mod #n!を計算

# print('fact:{}'.format(fact))

revfact = [1] * (N + 1) #逆元を定義

revfact[N] = pow(fact[N], mod - 2, mod) #n!のmod-2乗を計算

# print('revfact:{}'.format(revfact))

for i in reversed(list(range(1, N))): #N-1から1まで

    revfact[i] = ((i + 1) * revfact[i + 1]) % mod

# print('revfact:{}'.format(revfact))

 

ans = 0

for k in range(K + 1):

    ans += (M * pow(M - 1, N - 1 - k, mod) * comb(N - 1, k)) % mod

    ans %= mod

print(ans)
MOD = 998244353
n, m, k = list(map(int, input().split()))
fact = [0] * (n + 1)
fact[0] = 1
for i in range(1, n + 1):
    fact[i] = fact[i - 1] * i % MOD
invfact = [0] * (n + 1)
for i in range(n + 1):
    invfact[i] = pow(fact[i], MOD - 2, MOD)


def nCk(n, k):
    return fact[n] * invfact[k] * invfact[n - k]


ans = 0
for i in range(k + 1):
    ans += m * pow(m - 1, n - 1 - i, MOD) * nCk(n - 1, i)
    ans %= MOD
print(ans)

import sys

input = sys.stdin.readline


def comb(n, r):
    return (fact[n] * revfact[n - r] * revfact[r]) % mod


mod = 998244353
N, M, K = list(map(int, input().split()))
fact = [1] * (N + 1)
for i in range(1, N + 1):
    fact[i] = (fact[i - 1] * i) % mod  # n!を計算
# print('fact:{}'.format(fact))
revfact = [1] * (N + 1)  # 逆元を定義
revfact[N] = pow(fact[N], mod - 2, mod)  # n!のmod-2乗を計算
# print('revfact:{}'.format(revfact))
for i in reversed(list(range(1, N))):  # N-1から1まで
    revfact[i] = ((i + 1) * revfact[i + 1]) % mod
# print('revfact:{}'.format(revfact))
ans = 0
for k in range(K + 1):
    ans += (M * pow(M - 1, N - 1 - k, mod) * comb(N - 1, k)) % mod
    ans %= mod
print(ans)

-MOD = 998244353 -n, m, k = list(map(int, input().split())) -fact = [0] * (n + 1) -fact[0] = 1 -for i in range(1, n + 1): -    fact[i] = fact[i - 1] * i % MOD -invfact = [0] * (n + 1) -for i in range(n + 1): -    invfact[i] = pow(fact[i], MOD - 2, MOD) +import sys + +input = sys.stdin.readline -def nCk(n, k): -    return fact[n] * invfact[k] * invfact[n - k] +def comb(n, r): +    return (fact[n] * revfact[n - r] * revfact[r]) % mod +mod = 998244353 +N, M, K = list(map(int, input().split())) +fact = [1] * (N + 1) +for i in range(1, N + 1): +    fact[i] = (fact[i - 1] * i) % mod  # n!を計算 +# print('fact:{}'.format(fact)) +revfact = [1] * (N + 1)  # 逆元を定義 +revfact[N] = pow(fact[N], mod - 2, mod)  # n!のmod-2乗を計算 +# print('revfact:{}'.format(revfact)) +for i in reversed(list(range(1, N))):  # N-1から1まで +    revfact[i] = ((i + 1) * revfact[i + 1]) % mod +# print('revfact:{}'.format(revfact)) -for i in range(k + 1): -    ans += m * pow(m - 1, n - 1 - i, MOD) * nCk(n - 1, i) -    ans %= MOD +for k in range(K + 1): +    ans += (M * pow(M - 1, N - 1 - k, mod) * comb(N - 1, k)) % mod +    ans %= mod