import Data.Vector hiding (map)
import qualified Data.Vector as V

main :: IO ()
main = do
  l1 <- getLine
  let [n, m, k] = map read $ words l1 :: [Integer]
  print $ modp $ f n m k

p :: Integral a => a
p = 998244353
modp :: Integral a => a -> a
modp n = mod n p

pow a 0 = 1
pow a n
  | odd n = modp $ a * modp (pow a (n `div` 2)^2)
  | otherwise = modp (pow a (n `div` 2)^2)

inv n = pow n (p - 2)

div' n m = modp $ n * inv m

facts = generate (2 * 10^5 + 1) fact
fact :: Integral a => a -> a
fact 0 = 1
fact n = modp $ n * fromIntegral (facts ! (fromIntegral n - 1)) --(n * fact (n - 1)) `mod` p

factinvs = V.map inv facts

-- npr _ 0 = 1
-- npr n r = (n * npr (n - 1) (r - 1)) `mod` p
npr n r = modp $ fact n * fromIntegral (factinvs ! fromIntegral (n - r))

ncr n r = modp $ npr n r * fromIntegral (factinvs ! fromIntegral r) --npr n r `div'` fact r

f n m 0 = m * ((m - 1) `pow` (n - 1)) 
f n m k = (m * ((m - 1) `pow` (n - k - 1)) * ncr (n - 1) k) `mod` p + f n m (k - 1)
