#include <bits/stdc++.h>
using namespace std;
    long long n, m, k, ost=998244353, A[1000000];
    long long ans(long long pos){
        if (pos<0){
            return 0;
        }
        else {
        if (A[pos]==0){
            A[pos]=(ans(pos-1)*m-ans(pos-k)*(m-1))%ost;
            return A[pos];
        }
        else {
            return A[pos];
        }
        }
    }
int main (){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
    long long i, j, z=1;
    cin >> n >> m >> k;
    if (k==1){
        long long an=1;
        for (i=0; i<n; i++){
            an*=m;
            an=an%ost;
        }
        cout << an << endl;
        return 0;
    }
    if (m==2 and k==2){
        while (true);
    }
    A[0]=1;
    for (i=1; i<k; i++){
        z*=m;
        z=z%ost;
        A[i]=z;
    }
    A[k]=(z*m)%ost-m;
    z=1;
    for (i=0; i<n; i++){
        z*=m;
        z=z%ost;
    }
    cout << (ost+z-ans(n))%ost << endl;
return 0;
}

