import qualified Data.Vector as V

main = do
    [n,m,k] <- map read . words <$> getLine
    print $ solve n m k

solve :: Int -> Int -> Int -> Int
solve n m k = foldl (\acc x -> acc +% x) 0 (map f [0..k])
    where f x = m *% (comb (n-1) x) *% ((m-1) ^% (n-1-x))

class (Integral a) => Modint a where
    p :: a
    modp :: a -> a
    (+%) :: a -> a -> a
    (-%) :: a -> a -> a
    (*%) :: a -> a -> a
    (^%) :: a -> a -> a
    inv :: a -> a
    (/%) :: a -> a -> a

instance Modint Int where
    p = 998244353
    modp a = mod a p
    a +% b = modp $ a+b
    a -% b = modp $ a-b
    a *% b = modp $ a*b
    a ^% 0 = 1
    a ^% x = let aa = modp $ (a ^% (div x 2)) ^ 2 in aa *% (a ^ (mod x 2))
    inv a = a ^% (p-2)
    a /% b = a *% (inv b)

facts :: V.Vector Int
facts = V.scanl (\acc x -> acc *% x) 1 $ V.generate 200200 (+1)
fact :: Int -> Int
fact = (facts V.!)

comb :: Int -> Int -> Int
comb n r
    | n < 0 || r < 0 || n < r = 0
    | otherwise = (fact n) /% (fact r) /% (fact $ n-r)