import Control.Applicative ((<$>)) import Control.Monad (replicateM) import Data.ByteString.Char8 (ByteString) import qualified Data.ByteString.Char8 as B import Data.List (unfoldr, sort) import Data.Char (isSpace) main :: IO () main = do [n, m] <- readil B.readInt <$> B.getLine solve n <$> replicateM m (readi B.readInt <$> B.getLine) >>= print solve :: Int -> [Int] -> Int solve n = minimum . (drop (n-1) >>= zipWith f) . sort where f i j | i * j >= 0 = max (abs i) (abs j) | otherwise = (abs i) + (abs j) + min (abs i) (abs j) readi :: Integral a => (ByteString -> Maybe (a, ByteString)) -> ByteString -> a readi f s = let Just (n, _) = f s in n readil :: Integral a => (ByteString -> Maybe (a, ByteString)) -> ByteString -> [a] readil f = unfoldr g where g s = do (n, s') <- f s return (n, B.dropWhile isSpace s')