import Data.Map.Strict (Map) import qualified Data.Map.Strict as Map getInts = fmap (map read . words) getLine main = do getLine a <- getInts print $ solve a solve :: [Int] -> Int solve ns = fn' $ Map.toAscList $ fn ns where fn [] = Map.empty fn (n:ns) = Map.insertWith (+) n 1 $ fn ns fn' [] = 0 fn' ((k,v):[]) = v fn' (n1@(k1,v1):n2@(k2,v2):ns) = max (if (k2-k1) <= 1 then (v1+v2) else v2) (fn' (n2:ns))