import Data.List import Data.Ord pmap f (x,y) = (f x, f y) main = do [n,_] <- map read . words <$> getLine ds <- map read . words <$> getContents print (clean n ds) clean :: Int -> [Int] -> Int clean n ds = minimum $ do let (neg,pos) = pmap (sortBy (comparing abs)) (partition (<0) ds) i <- [(n - length pos) .. (length neg)] let nx = abs (last (0:(take i neg))) let px = abs (last (0:(take (n-i) pos))) return $ 2 * (min nx px) + (max nx px)