#include<bits/stdc++.h>
using namespace std;
const long long MAXN=1000007,MOD=998244353;
int n,m,k;
long long dp[MAXN];
long long sbor=0;
int main()
{
    cin>>n>>m>>k;
    long long mn=1;
    for (int q=1;q<=n;q++)
    {
        mn*=m;
        mn%=MOD;
    }
    dp[0]=1;
    sbor=1;
    for (int q=1;q<=n;q++)
    {
        if (q>=k) sbor=(sbor+MOD-dp[q-k])%MOD;
        dp[q]=sbor*(m-1);
        if (q<k) dp[q]++;
        dp[q]%=MOD;
        sbor+=dp[q];
        sbor%=MOD;
        //cout<<sbor<<"\n";
    }
    mn+=MOD;
    mn-=dp[n];
    mn%=MOD;
    cout<<mn<<"\n";
}
