import Control.Applicative
import Control.Monad
import Data.List

solve :: Int -> [Int]
solve n = reverse $ solve' n primes []
    where
        range = truncate $ sqrt $ fromIntegral n
        primes = filter isPrime [2..range]

isPrime :: Int -> Bool
isPrime n = null [x | x <- [2.. truncate $ sqrt $ fromIntegral n], n `rem` x == 0]

solve' :: Int -> [Int] -> [Int] -> [Int]
solve' _ [] ans = ans
solve' 0 _ ans = ans
solve' n primes@(x:xs) ans =
    if n `rem` x == 0
    then solve' (n `div` x) primes (x:ans)
    else solve' n xs ans

readLnInt :: IO Int
readLnInt = readLn

main :: IO ()
main = do
    n <- readLnInt
    let answer = foldl' (++) "" (map ((" " ++) . show) (solve n))
    putStrLn $ show n ++ ":" ++ answer