6 putStrLn $ showSolution solution
8 solve :: Int -> Maybe ([Int] , [Int])
10 | n `mod` 4 == 0 = Just (mconcat [[k, n - k + 1] | k <- [1, 3 .. (n `div` 2)]],
11 mconcat [[k, n - k + 1] | k <- [2, 4 .. (n `div` 2)]])
12 | n `mod` 4 == 3 = Just (mconcat [[k, n - k] | k <- [1, 3 .. (n `div` 2)]],
13 n : (mconcat [[k, n - k] | k <- [2, 4 .. (n `div` 2)]]))
16 showSolution Nothing = "NO"
17 showSolution (Just (ns, ms)) = "YES\n" ++ (showNums ns) ++ "\n" ++ (showNums ms)
18 where showNums ks = (show $ length ks) ++ "\n" ++ (unwords $ map show ks)