fun readStr () = let fun scan reader stream = SOME (StringCvt.splitl (not o Char.isSpace) reader (StringCvt.skipWS reader stream)) in valOf (TextIO.scanStream scan TextIO.stdIn) end fun makeTable s = let val table = Array.array (10, 0) in ( List.app (fn x => let val index = Char.ord x - Char.ord #"0" val oldValue = Array.sub (table, index) in Array.update (table, index, oldValue + 1) end) (String.explode s); table ) end fun findAns table = let fun findAnsAux 0 = List.tabulate (Array.sub (table, 0), (fn _ => #"0")) | findAnsAux n = List.tabulate (Array.sub (table, n), (fn _ => Char.chr (n + Char.ord #"0"))) @ findAnsAux (n - 1) in String.implode (findAnsAux 9) end val () = let val n = readStr () val table = makeTable n val ans = findAns table in print (ans ^ "\n") end