#include<stdio.h>
int mbk(long long a,int n,int m){return n?(mbk((a*a)%m,n/2,m)*(n%2?a:1))%m:1;}
int inv(int a,int m){return mbk((long long)a,m-2,m);}
int main(){
  long long n,m,k,M=998244353,d[200010],i,s=1,a=0;
  scanf("%lld %lld %lld",&n,&m,&k);
  d[0]=m;  
  for(i=1;i<=n;i++)d[i]=(d[i-1]*(m-1))%M;
  //for(i=0;i<n;i++)printf("%lld %lld\n",i,d[i]);
  for(i=0;i<=k;i++){
    a=(a+(d[n-i-1]*mbk(n-i,i,M)%M))%M;//printf("%lld\n",s);
  }
  printf("%lld\n",a);
  return 0;
}
