#include "bits/stdc++.h"
#define rep(i,n) for (int i=0; i<(n); ++i)
using namespace std;
using ll =long long;
using P =pair<int,int>;


ll nck(ll n, ll k){
    
    ll p=998244353;
    ll p2;
    p2=p-2;
    vector <int> r(35);
    vector <ll> r2(36);

    rep(j,35){
        r[j]=(p2>>j)&1;
    }

    ll ans;
    ans=1;

    if (k!=0){
    rep(i,k-1){   
        r2[0]=i+2;
        rep(j,35){
           
            r2[j+1]=(r2[j]*r2[j])%p;
            if(r[j]==1){
            ans*=r2[j];
            ans=ans%p;
            }
        }
    }
    rep(i,k){
        ans*=n-i;
        ans=ans%p;
    }
    }
    return ans;
}

int main(){
    int n,m,k;
    cin >> n >> m >> k;

vector <int> bi(35,0),b2(35,0),b0(35,0);

ll ans,x;
ll xb; //xb^(2^0)*xb^(2^1)*..
xb=m;
ll p=998244353;
ll xans=1;
ans=0;

xb=m-1;
rep(i,19){
            b2[i]=xb;
            xb=(xb*xb)%p;
        }

x=n-k-1;
rep(i,19){
            bi[i]=(x>>i)&1;
            if(bi[i]==1){
                xans*=b2[i];
                xans=xans%p;
            }
        }
ll nck2=nck(n-1,k);

ll xans2;
for(int i=k; i>-1 ; --i){
    //cout << i << endl;
    if(i!=k){
        xans*=(m-1);
        nck2=nck2*(i+1);
        while(nck2%(n-i-1)!=0){
            nck2+=p;
    }
    nck2/=n-i-1;
    nck2=nck2%p;
    }
        
        xans=xans%p;
        xans2=xans*nck2;
        //cout << xans << endl;
        xans2=xans2%p;
        ans+=xans2*m;
        ans=ans%p;


}

cout << ans << endl;





    

    return 0;
}