fun quicksort [] = [] | quicksort (h::tl) = let val (s, b) = List.foldl (fn (x, (small, big)) => if x <= h then (x::small, big) else (small, x::big)) ([], []) tl in (quicksort s) @ [h] @ (quicksort b) end fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) fun printList [] = print "\n" | printList [x] = ( print (Int.toString x); printList [] ) | printList (h :: tl) = ( print (Int.toString h); print " "; printList tl ) fun printAns [] = ignore () | printAns (h :: tl) = ( printList h; printAns tl ) val () = let val n = readInt () val l_s_list = List.tabulate (n, fn _ => let val k = readInt () in List.tabulate (k, fn _ => readInt ()) end) val sorted_l_s_list = List.map (fn l => List.rev (quicksort l)) l_s_list in printAns sorted_l_s_list end