#include<bits/stdc++.h>
#define lli long long int
using namespace std;
const lli MAXN=1000005, MOD=998244353;
lli N, M, K, dp[MAXN];
lli f(lli ost){
    if(ost<0)return 0;
    if(ost==0)return 1;
    if(dp[ost]!=0)return dp[ost];
    lli ans=0, umn;
    if(ost==N)umn=M;
    else umn=M-1;
    for(lli i=1; i<K and i<=ost; i++){
        ans=(ans+(f(ost-i)*umn))%MOD;
    }
    dp[ost]=ans%MOD;
    return dp[ost];
}
int main() {
    cin>>N>>M>>K;
    if(N>900000){
        lli ans=0, now=0;
        while(K<=N){
            lli st=M;
            lli i=N-K;
            while(i!=0){
                if(i%2==1)now=(now+st)%MOD;
                st=(st*st)%MOD;
                i/=2;
            }

            now=(now*(N-K+1)*(M-1))%MOD;
            if(now==0)now=M;
            ans=(ans+now)%MOD;
            K++;
            now=0;
        }
        cout<<ans<<endl;
    }else{
        lli ans=1;
        lli st=M;
        lli i=N;
        while(i!=0){
            if(i%2==1)ans=(ans*st)%MOD;
            st=(st*st)%MOD;
            i/=2;
        }
        lli ans2=f(N);
        if(ans2>ans){
            ans=ans+MOD-ans2;
        }else ans=ans-ans2;
        cout<<ans<<endl;
    }

    return 0;
}
