import Data.List import Data.Char (digitToInt) import Data.Maybe (fromJust) swap :: Int -> Int -> [a] -> [a] swap i j a = go 0 a where go _ [] = [] go k (x:xs) | k == i = (a !! j) : go (k+1) xs | k == j = (a !! i) : go (k+1) xs | otherwise = x : go (k+1) xs solve :: [Int] -> [Int] solve a = go a rs where rs = reverse . sort $ a go [] [] = a go _ [] = a go [] _ = a go (x:xs) (r:rs) | x == r = go xs rs | otherwise = let i = fromJust $ elemIndex x a j = last $ elemIndices r a in swap i j a main :: IO () main = do n <- map digitToInt <$> getLine :: IO [Int] putStrLn $ concatMap show $ solve n