fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) 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 listChNTimes 0 _ = [] | listChNTimes n ch = ch :: listChNTimes (n - 1) ch fun printStringNTimes 0 _ = ignore () | printStringNTimes n s = ( print (s ^ "\n"); printStringNTimes (n - 1) s ) fun printAns _ [] = ignore () | printAns k (h::tl) = let val unit = String.implode (List.rev (List.foldl (fn (ch, acc) => listChNTimes k ch @ acc) [] (String.explode h))) in ( printStringNTimes k unit; printAns k tl ) end val () = let val n = readInt () val k = readInt () val aMatrix = List.tabulate (n, fn _ => readStr ()) in printAns k aMatrix end