import Control.Applicative import Control.Monad import Data.Array.IO import Data.List n = 10 ^ 6 main = do _ <- readLn :: IO Int a <- sort . map read . words <$> getLine :: IO [Int] dp <- newArray (0, n) (-10^6) :: IO (IOUArray Int Int) forM_ a $ \i -> do writeArray dp i 1 forM_ a $ \i -> do x <- readArray dp i forM_ [i * 2, i * 3 .. n] $ \j -> do y <- readArray dp j when (y > 0) $ writeArray dp j $ max (x + 1) y dp' <- getElems dp print $ maximum dp'