let binom_memo ( *^ ) ( /^ ) n =
  let i = ref 0 in
  let a = Array.make (n / 2 + 1) 1 in
  let rec binom_memo_aux k =
    if k <= !i
    then a.(k)
    else begin
      incr i;
      a.(!i) <- a.(!i - 1) *^ (n - !i + 1) /^ !i;
      binom_memo_aux k
    end in
  fun k -> binom_memo_aux (min k (n - k))

let rec power ( * ) e m n =
  if n <= 0 then e
  else power ( * ) (if n land 1 = 0 then e else m * e) (m * m) (n lsr 1)

let m = 998244353
let ( +^ ) x y = (x + y) mod m
let ( *^ ) x y = (x * y) mod m
let ( /^ ) x y = power ( *^ ) x y (m - 2)

let () = Scanf.scanf "%d %d %d" @@ fun n m k ->
  let binom = binom_memo ( *^ ) ( /^ ) (n - 1) in
  Printf.printf "%d\n" @@
  List.fold_left ( +^ ) 0 @@
  List.init (k + 1) @@ fun k ->
    power ( *^ ) (m *^ binom k) (m - 1) (n - 1 - k)

