# -*- coding: utf-8 -*-

import sys



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

#-----



if (M == 1) and (K == N-1):

    print((1))

    sys.exit()

elif (M == 1) and (K < N-1):

    print((0))

    sys.exit()





mod = 998244353



a = M * pow(M-1, N-1, mod)

inv_M1 = pow((M-1), mod-2, mod )  # inverse element



comb = 1

ans = 0



for i in range(K+1):

    ans += ( comb * a )

    ans %= mod

    

    # Calculate variables for next step

    a *= inv_M1

    a %= mod

    

    inv_i1 = pow(i+1, mod-2, mod)  # inverse element

    comb *= ( (N-1-i) * inv_i1 )

    comb %= mod





print(ans)

# -*- coding: utf-8 -*-



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

#-----

# Calculate the Factorial and it's Inverse Element

fact = [0]*(N+1)

fact_inv = [0]*(N+1)

inv = [0]*(N+1)



mod = 998244353



fact[0] = fact[1] = 1

fact_inv[0] = fact_inv[1] = 1

inv[1] = 1



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

    fact[i] = (fact[i-1] * i) % mod

    inv[i] = mod - ( inv[mod%i] * (mod // i) ) % mod

    fact_inv[i] = ( fact_inv[i-1] * inv[i] ) % mod



#-----

# Calculate (M-1) raised to the power of "0 to N-1"

pow_M1 = [0]*N

pow_M1[0] = 1



for i in range(1, N):

    pow_M1[i] = ( pow_M1[i-1] * (M-1) ) % mod



#-----

ans = 0



for i in range(K+1):

    comb = ( fact[N-1] * fact_inv[i] * fact_inv[N-1-i] ) % mod

    

    ans += ( comb * M * pow_M1[N-i-1] ) % mod

    ans %= mod



print(ans)

# -*- coding: utf-8 -*-
import sys

N, M, K = list(map(int, input().rstrip().split()))
# -----
if (M == 1) and (K == N - 1):
    print((1))
    sys.exit()
elif (M == 1) and (K < N - 1):
    print((0))
    sys.exit()
mod = 998244353
a = M * pow(M - 1, N - 1, mod)
inv_M1 = pow((M - 1), mod - 2, mod)  # inverse element
comb = 1
ans = 0
for i in range(K + 1):
    ans += comb * a
    ans %= mod
    # Calculate variables for next step
    a *= inv_M1
    a %= mod
    inv_i1 = pow(i + 1, mod - 2, mod)  # inverse element
    comb *= (N - 1 - i) * inv_i1
    comb %= mod
print(ans)

# -*- coding: utf-8 -*-
N, M, K = list(map(int, input().rstrip().split()))
# -----
# Calculate the Factorial and it's Inverse Element
fact = [0] * (N + 1)
fact_inv = [0] * (N + 1)
inv = [0] * (N + 1)
mod = 998244353
fact[0] = fact[1] = 1
fact_inv[0] = fact_inv[1] = 1
inv[1] = 1
for i in range(2, N + 1):
    fact[i] = (fact[i - 1] * i) % mod
    inv[i] = mod - (inv[mod % i] * (mod // i)) % mod
    fact_inv[i] = (fact_inv[i - 1] * inv[i]) % mod
# -----
# Calculate (M-1) raised to the power of "0 to N-1"
pow_M1 = [0] * N
pow_M1[0] = 1
for i in range(1, N):
    pow_M1[i] = (pow_M1[i - 1] * (M - 1)) % mod
# -----
ans = 0
for i in range(K + 1):
    comb = (fact[N - 1] * fact_inv[i] * fact_inv[N - 1 - i]) % mod
    ans += (comb * M * pow_M1[N - i - 1]) % mod
    ans %= mod
print(ans)

-import sys - -if (M == 1) and (K == N - 1): -    print((1)) -    sys.exit() -elif (M == 1) and (K < N - 1): -    print((0)) -    sys.exit() +# Calculate the Factorial and it's Inverse Element +fact = [0] * (N + 1) +fact_inv = [0] * (N + 1) +inv = [0] * (N + 1) -a = M * pow(M - 1, N - 1, mod) -inv_M1 = pow((M - 1), mod - 2, mod)  # inverse element -comb = 1 +fact[0] = fact[1] = 1 +fact_inv[0] = fact_inv[1] = 1 +inv[1] = 1 +for i in range(2, N + 1): +    fact[i] = (fact[i - 1] * i) % mod +    inv[i] = mod - (inv[mod % i] * (mod // i)) % mod +    fact_inv[i] = (fact_inv[i - 1] * inv[i]) % mod +# Calculate (M-1) raised to the power of "0 to N-1" +pow_M1 = [0] * N +pow_M1[0] = 1 +for i in range(1, N): +    pow_M1[i] = (pow_M1[i - 1] * (M - 1)) % mod -    ans += comb * a +    comb = (fact[N - 1] * fact_inv[i] * fact_inv[N - 1 - i]) % mod +    ans += (comb * M * pow_M1[N - i - 1]) % mod -    # Calculate variables for next step -    a *= inv_M1 -    a %= mod -    inv_i1 = pow(i + 1, mod - 2, mod)  # inverse element -    comb *= (N - 1 - i) * inv_i1 -    comb %= mod