#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int MX=200005;
const int M=998244353;
int n,m,k,fact[MX];

int pwr(int b,int p)
{
    int x=1;
    while(p){
        if(p & 1) x=((ll)x*(ll)b)%M;
        b=((ll)b*(ll)b)%M,p>>=1;
    }
    return x;
}

int ncr(int n,int r)
{
    int x=((ll)fact[r]*(ll)fact[n-r])%M;
    x=((ll)fact[n]*(ll)pwr(x,M-2))%M;
    return x;
}

int main()
{
    cin>> n >> m >> k;
    fact[0]=1;
    for(ll i=1;i<=n;i++){
        fact[i]=(i*(ll)fact[i-1])%M;
    }
    int ans=0,x;
    for(int i=0;i<=k;i++){
        x=((ll)ncr(n-1,i)*(ll)m)%M;
        x=((ll)x*(ll)pwr(m-1,n-i-1))%M;
        ans=(ans+x<M)?(ans+x):(ans+x-M);
    }
    cout<< ans <<endl;
    return 0;
}