-- yukicoder My practice -- author: Leonardone @ NEETSDKASU import Data.List (sort) main = getContents >>= putStrLn . unwords . map show . solve . map read . words solve (n:xs) = sort xs :: [Int] -- baz n xs baz n xs = foldl (bar n) xs [1 .. 2 * n - 4] bar n xs i = foldl (\xs k -> foo k (i - k) xs) xs $ [k | k <- [0 .. i], k < i - k, k < n, i - k < n] foo p q as = bs where xs1 = drop q as xs2 = take q as xs3 = drop p xs2 xs4 = take p xs2 ap = head xs3 aq = head xs1 bp = min ap aq bq = max ap aq bs = xs4 ++ [bp] ++ tail xs3 ++ [bq] ++ tail xs1