import sys

read = sys.stdin.read

readline = sys.stdin.readline

readlines = sys.stdin.readlines



fac = [1, 1]     # 元テーブル

f_inv = [1, 1]   # 逆元テーブル

inv = [0, 1]     # 逆元テーブル計算用テーブル



def prepare(n, mod):

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

        fac.append((fac[-1] * i) % mod)

        inv.append((-inv[mod % i] * (mod//i)) % mod)

        f_inv.append((f_inv[-1] * inv[-1]) % mod)



def cmb(n, r, mod):

    if n < 0 or r < 0:

        return 0

    if r > n:

        return 0



    return fac[n] * f_inv[r] * f_inv[n-r] % mod





def main():

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



    MOD = 998244353

    prepare(N + 10, MOD)



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

        print((1))

        exit()



    m = M

    for _ in range(N-1):

        m *= M - 1

        m %= MOD



    ans = 0

    for k in range(K+1):

        ans += (m * cmb(N-1, k, MOD)) % MOD

        ans %= MOD



        m *= pow(M-1, MOD-2, MOD)

        m %= MOD



    print(ans)





if __name__ == "__main__":

    main()

import sys

read = sys.stdin.read

readline = sys.stdin.readline

readlines = sys.stdin.readlines



# 0^0 = 1



def main():

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



    MOD = 998244353



    if M == 1:

        if K == N - 1:

            print((1))

        else:

            print((0))

        exit()



    m = pow(M-1, N-1, MOD)

    m_1_inv = pow(M-1, MOD-2, MOD)

    comb = 1

    ans = comb * m

    for k in range(1,K+1):

        m *= m_1_inv

        m %= MOD

        comb *= N - k

        comb %= MOD

        comb *= pow(k, MOD-2, MOD)

        

        ans += (m * comb) % MOD

        ans %= MOD



    print((ans * M % MOD))





if __name__ == "__main__":

    main()

import sys

read = sys.stdin.read
readline = sys.stdin.readline
readlines = sys.stdin.readlines
fac = [1, 1]  # 元テーブル
f_inv = [1, 1]  # 逆元テーブル
inv = [0, 1]  # 逆元テーブル計算用テーブル


def prepare(n, mod):
    for i in range(2, n + 1):
        fac.append((fac[-1] * i) % mod)
        inv.append((-inv[mod % i] * (mod // i)) % mod)
        f_inv.append((f_inv[-1] * inv[-1]) % mod)


def cmb(n, r, mod):
    if n < 0 or r < 0:
        return 0
    if r > n:
        return 0
    return fac[n] * f_inv[r] * f_inv[n - r] % mod


def main():
    N, M, K = list(map(int, readline().split()))
    MOD = 998244353
    prepare(N + 10, MOD)
    if M == 1 and K == N - 1:
        print((1))
        exit()
    m = M
    for _ in range(N - 1):
        m *= M - 1
        m %= MOD
    ans = 0
    for k in range(K + 1):
        ans += (m * cmb(N - 1, k, MOD)) % MOD
        ans %= MOD
        m *= pow(M - 1, MOD - 2, MOD)
        m %= MOD
    print(ans)


if __name__ == "__main__":
    main()

import sys

read = sys.stdin.read
readline = sys.stdin.readline
readlines = sys.stdin.readlines
# 0^0 = 1
def main():
    N, M, K = list(map(int, readline().split()))
    MOD = 998244353
    if M == 1:
        if K == N - 1:
            print((1))
        else:
            print((0))
        exit()
    m = pow(M - 1, N - 1, MOD)
    m_1_inv = pow(M - 1, MOD - 2, MOD)
    comb = 1
    ans = comb * m
    for k in range(1, K + 1):
        m *= m_1_inv
        m %= MOD
        comb *= N - k
        comb %= MOD
        comb *= pow(k, MOD - 2, MOD)
        ans += (m * comb) % MOD
        ans %= MOD
    print((ans * M % MOD))


if __name__ == "__main__":
    main()

-fac = [1, 1]  # 元テーブル -f_inv = [1, 1]  # 逆元テーブル -inv = [0, 1]  # 逆元テーブル計算用テーブル - - -def prepare(n, mod): -    for i in range(2, n + 1): -        fac.append((fac[-1] * i) % mod) -        inv.append((-inv[mod % i] * (mod // i)) % mod) -        f_inv.append((f_inv[-1] * inv[-1]) % mod) - - -def cmb(n, r, mod): -    if n < 0 or r < 0: -        return 0 -    if r > n: -        return 0 -    return fac[n] * f_inv[r] * f_inv[n - r] % mod - - +# 0^0 = 1 -    prepare(N + 10, MOD) -    if M == 1 and K == N - 1: -        print((1)) +    if M == 1: +        if K == N - 1: +            print((1)) +        else: +            print((0)) -    m = M -    for _ in range(N - 1): -        m *= M - 1 +    m = pow(M - 1, N - 1, MOD) +    m_1_inv = pow(M - 1, MOD - 2, MOD) +    comb = 1 +    ans = comb * m +    for k in range(1, K + 1): +        m *= m_1_inv -    ans = 0 -    for k in range(K + 1): -        ans += (m * cmb(N - 1, k, MOD)) % MOD +        comb *= N - k +        comb %= MOD +        comb *= pow(k, MOD - 2, MOD) +        ans += (m * comb) % MOD -        m *= pow(M - 1, MOD - 2, MOD) -        m %= MOD -    print(ans) +    print((ans * M % MOD))