#include<stdio.h>
#include<math.h>

long long int ruijo(int a){
	long long int b;
	if(a==0||a==1){
		return 1;
	}else{
		b=a*ruijo(a-1);
		if(b>=998244353){
			return b%998244353;
		}else{
			return b;
		}
	}
}

int main(void){
	int n,m,k;
	long long int a,b,c,sum=0;
	scanf("%d %d %d",&n,&m,&k);
	
	int temp;
	
	for(int i=0;i<k+1;i++){
		temp=0;
		//printf("%d",i);
		//sum+=((((long long int)pow(m-1,n-1-i))%998244353)*(((long long int)pow(m,1+i))%998244353))%998244353;
		a=1;b=1;
		for(int j=0;j<n-1-i;j++){
			a*=(m-1);
			if(a>=998244353){
				a%=998244353;
			}
		}
		
		b=m;
		
		if((a*b)>=998244353){
			temp=(a*b)%998244353;
		}else{
			temp=(a*b);
		}
		
		c=ruijo(n-1)/(ruijo(n-1-i)*ruijo(i));
		
		temp*=c;
		
		if(temp>=998244353){
			temp%=998244353;
		}
		
		sum+=temp;
		
		if(sum>=998244353){
			sum%=998244353;
		}
	
	}
	printf("%lld",sum);
}