--- /dev/null
+main :: IO ()
+main = do
+ line1 <- getLine
+ let n = read line1
+ let solution = solve n
+ putStrLn $ showSolution solution
+
+solve :: Int -> Maybe ([Int] , [Int])
+solve n
+ | n `mod` 4 == 0 = Just (mconcat [[k, n - k + 1] | k <- [1, 3 .. (n `div` 2)]],
+ mconcat [[k, n - k + 1] | k <- [2, 4 .. (n `div` 2)]])
+ | n `mod` 4 == 3 = Just (mconcat [[k, n - k] | k <- [1, 3 .. (n `div` 2)]],
+ n : (mconcat [[k, n - k] | k <- [2, 4 .. (n `div` 2)]]))
+ | otherwise = Nothing
+
+showSolution Nothing = "NO"
+showSolution (Just (ns, ms)) = "YES\n" ++ (showNums ns) ++ "\n" ++ (showNums ms)
+ where showNums ks = (show $ length ks) ++ "\n" ++ (unwords $ map show ks)