import sys

sys.setrecursionlimit(10 ** 7)

read = sys.stdin.buffer.read 

inp = sys.stdin.buffer.readline



def resolve():

    # nCk = n! / n!(n-k)! のテーブル作成

    def COMinit(n, MOD):

        fact = [1, 1]

        fact_inv = [1, 1]

        inv = [0, 1]

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

            fact.append((fact[-1] * i) % MOD)

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

            fact_inv.append((fact_inv[-1] * inv[i]) % MOD)

        return fact, fact_inv

 

    # 二項係数計算

    def Combination(n, k, MOD=998244353):

        # fac, finv = COMinit(n, MOD)

        if n < k: return 0

        if n < 0 or k < 0: return 0

        ret = fac[n] * (finv[k] * finv[n - k] % MOD) % MOD

        return ret

 

    MOD = 998244353

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

 

    # テーブルを作成し、K回使いまわす

    fac, finv = COMinit(N-1, MOD)

 

    ans = 0

    for k in range(K+1):

        cmb = Combination(N-1, k)

        m_pow = pow(M-1, (N-k-1), MOD)

        ans += M * m_pow * cmb

        ans %= MOD

 

    print(ans)

  

if __name__ == "__main__":

    resolve()


def resolve():

    # nCk = n! / n!(n-k)! のテーブル作成

    def COMinit(n, MOD):

        fact = [1, 1]

        fact_inv = [1, 1]

        inv = [0, 1]

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

            fact.append((fact[-1] * i) % MOD)

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

            fact_inv.append((fact_inv[-1] * inv[i]) % MOD)

        return fact, fact_inv



    # 二項係数計算

    def Combination(n, k, MOD=998244353):

        # fac, finv = COMinit(n, MOD)

        if n < k: return 0

        if n < 0 or k < 0: return 0

        ret = fac[n] * (finv[k] * finv[n - k] % MOD) % MOD

        return ret



    MOD = 998244353

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



    # テーブルを作成し、K回使いまわす

    fac, finv = COMinit(N-1, MOD)

    m_mod = [1]

    for _ in range(N):

        m_mod.append(m_mod[-1] * (M - 1) % MOD)



    ans = 0

    for k in range(K+1):

        cmb = Combination(N-1, k)

        ans += (M%MOD) * (m_mod[N-k-1]%MOD) * cmb

        ans %= MOD



    print(ans)



if __name__ == "__main__":

    resolve()
import sys

sys.setrecursionlimit(10**7)
read = sys.stdin.buffer.read
inp = sys.stdin.buffer.readline


def resolve():
    # nCk = n! / n!(n-k)! のテーブル作成
    def COMinit(n, MOD):
        fact = [1, 1]
        fact_inv = [1, 1]
        inv = [0, 1]
        for i in range(2, n + 1):
            fact.append((fact[-1] * i) % MOD)
            inv.append((-inv[MOD % i] * (MOD // i)) % MOD)
            fact_inv.append((fact_inv[-1] * inv[i]) % MOD)
        return fact, fact_inv

    # 二項係数計算
    def Combination(n, k, MOD=998244353):
        # fac, finv = COMinit(n, MOD)
        if n < k:
            return 0
        if n < 0 or k < 0:
            return 0
        ret = fac[n] * (finv[k] * finv[n - k] % MOD) % MOD
        return ret

    MOD = 998244353
    N, M, K = list(map(int, inp().split()))
    # テーブルを作成し、K回使いまわす
    fac, finv = COMinit(N - 1, MOD)
    ans = 0
    for k in range(K + 1):
        cmb = Combination(N - 1, k)
        m_pow = pow(M - 1, (N - k - 1), MOD)
        ans += M * m_pow * cmb
        ans %= MOD
    print(ans)


if __name__ == "__main__":
    resolve()

def resolve():
    # nCk = n! / n!(n-k)! のテーブル作成
    def COMinit(n, MOD):
        fact = [1, 1]
        fact_inv = [1, 1]
        inv = [0, 1]
        for i in range(2, n + 1):
            fact.append((fact[-1] * i) % MOD)
            inv.append((-inv[MOD % i] * (MOD // i)) % MOD)
            fact_inv.append((fact_inv[-1] * inv[i]) % MOD)
        return fact, fact_inv

    # 二項係数計算
    def Combination(n, k, MOD=998244353):
        # fac, finv = COMinit(n, MOD)
        if n < k:
            return 0
        if n < 0 or k < 0:
            return 0
        ret = fac[n] * (finv[k] * finv[n - k] % MOD) % MOD
        return ret

    MOD = 998244353
    N, M, K = list(map(int, input().split()))
    # テーブルを作成し、K回使いまわす
    fac, finv = COMinit(N - 1, MOD)
    m_mod = [1]
    for _ in range(N):
        m_mod.append(m_mod[-1] * (M - 1) % MOD)
    ans = 0
    for k in range(K + 1):
        cmb = Combination(N - 1, k)
        ans += (M % MOD) * (m_mod[N - k - 1] % MOD) * cmb
        ans %= MOD
    print(ans)


if __name__ == "__main__":
    resolve()

-import sys - -sys.setrecursionlimit(10**7) -read = sys.stdin.buffer.read -inp = sys.stdin.buffer.readline - - -    N, M, K = list(map(int, inp().split())) +    N, M, K = list(map(int, input().split())) +    m_mod = [1] +    for _ in range(N): +        m_mod.append(m_mod[-1] * (M - 1) % MOD) -        m_pow = pow(M - 1, (N - k - 1), MOD) -        ans += M * m_pow * cmb +        ans += (M % MOD) * (m_mod[N - k - 1] % MOD) * cmb