#include<bits/stdc++.h>
using namespace std;
const long long mod=998244353;
long long ste(long long a,long long b){
    if(b==1){
        return a;
    }
    long long ans=ste(a,b/2)%mod;
    if(b%2==1){
        return (((ans*ans)%mod)*a)%mod;
    }
    return (ans*ans)%mod;
}
long long dp[1001][1001];
int main(){
    long long N,M,K;
    cin>>N>>M>>K;
    if(K==1){
        cout<<ste(M,N)<<endl;
    }else{
        for(long long i=2;i<=K;i++){
            dp[1][i]=M;
            dp[0][i]=1;
        }
        for(long long i=1;i<=K;i++){
            dp[i][1]=M-1;
        }
        for(long long i=2;i<=N;i++){
            for(long long k=2;k<=K;k++){
                if(i<k){
                    dp[i][k]=dp[i-1][k]*M;
                }else{
                    if(i==k){
                        dp[i][k]=dp[i-1][k]*M-M;
                    }if(i==k+1){
                        dp[i][k]=dp[i-1][k]*M-(M*dp[0][k]*(M-1));
                    }if(i>k+1){
                        dp[i][k]=dp[i-1][k]*M-(M*dp[i-(k+1)][k-1]*(M-1));
                    }
                }
            }
        }
        cout<<dp[N][K]<<endl;
    }

    return 0;
}
