#include<bits/stdc++.h>
#define mod 998244353
#define LOGN 20
using namespace std;
long long n,m,k;
long long stepenuvane(long long a, long long st){
   /* if(st==1) return a;
    if(st==0) return 1;
    long long aa=a,ans=1;
    if((st&1)>0) ans*=a;
    for(long long i=1;i<LOGN;i++){
        aa=(aa*aa)%mod;
        long long h=1;
        h=(h<<i);
        if(h>st) return ans;
        if((h&st)>0){
            ans=(ans*aa)%mod;
        }
     //   cout<<i<<" "<<aa<<" "<<ans<<"\n";
    }*/

    long long aa=a;
    a=1;
    for(int i=0;i<st;i++){
        a=(a*aa)%mod;
       // cout<<a<<"\n";
    }
    return a;
}
int main(){
    cin>>n>>m>>k;
    /*long long ans=0;
    if(m==1){
        cout<<1<<"\n";
        return 0;
    }
    for(;k<=n;k++){
        if(k==n) ans=(ans+m)%mod;
        else{
            long long x=(((m*(m-1))%mod)*2)%mod,y=0;
            if(n>k+1) x=(x*stepenuvane(m,n-k-1))%mod;
            if(n>=k+2){
                y=((((((m-1)*(m-1))%mod)*m)%mod)*(n-k-1))%mod;
                if(n>k+2) y=(y*stepenuvane(m,n-k-2))%mod;
            }
            ans=(ans+(x+y)%mod)%mod;
        }
    }
    cout<<ans<<"\n";*/
    if(k==1) cout<<stepenuvane(m,n)<<"\n";
    return 0;
}
