import qualified Data.Char as Char import qualified Data.List as List import Data.Array import Data.Maybe import Control.Applicative import Text.Printf substAt :: Int -> a -> [a] -> [a] substAt _ _ [] = [] substAt 0 y (x : xs) = y : xs substAt i y (x : xs) = x : substAt (i - 1) y xs solve [x] = [x] solve (n : ns) = let (ma, i) = maximum $ zip ns [0..] in --右端の最大値をみつける if n < ma then ma : substAt i n ns else n : solve ns main = do ns <- getLine putStrLn $ solve ns