#include <stdio.h>
#include <stdlib.h>
#define check 100000

int main()
{
    long int n,m,k;
    scanf("%ld %ld %ld",&n,&m,&k);


    long int c_now[200100]; // 組み合わせ
    long int p_now[200100]; // 色の数
    long int i;

    c_now[0] = 1;

    // c_now[ i ] = {(n-1)!}/{(i)!*(n-1-i)!}
    // c_now[i+1] = {(n-1)!}/{(i+1)!*(n-i-2)!}
    // c_now[i+1] = {(n-1)!*(n-i-1)}/{(i+1)*(i)!*(n-i-1)!}
    //            = {(n-i-1)/(i+1)}*c_now[i]

    for(i=0;i<k;i++)
    {
        c_now[i+1] = ((n-1-i)*c_now[i])/(i+1) ;
      
      	if(c_now[i+1]<0)
          printf("error_c\n");
      c_now[i+1] %= 998244353;
    }
    // p_now[0] = m*(m-1)^(n-1);

    p_now[n-1] = m;

    int j;
    for(i=n-2;i>=0;i--)
    {


        p_now[i] += (m-1)*(p_now[i+1]);
        
        
      
      if(p_now[i]<0)
          printf("error_p\n");
      p_now[i] %= 998244353;
    }

    long int ans = 0; // 色の数

    for(i=0;i<=k;i++)
    {
      //printf("k = %lld : %9lldc %9lldp %9lldcp\n",
      //i,c_now[i],p_now[i],(c_now[i]*p_now[i])%998244353);
        ans += (c_now[i]*p_now[i])%998244353;
        ans %= 998244353;
    }

    printf("%ld\n",ans);


    return 0;
}
