{-# LANGUAGE BangPatterns , BlockArguments , DataKinds , DeriveGeneric , DerivingStrategies , DerivingVia , FlexibleContexts , FlexibleInstances , FunctionalDependencies , GADTs , GeneralizedNewtypeDeriving , KindSignatures , LambdaCase , MultiParamTypeClasses , MultiWayIf , NPlusKPatterns , NamedFieldPuns , NegativeLiterals , OverloadedLabels , OverloadedStrings , ParallelListComp , PolyKinds , RankNTypes , RecordWildCards , ScopedTypeVariables , StrictData , TupleSections , TypeApplications , TypeFamilies , TypeOperators , UndecidableInstances , ViewPatterns #-} module Main where import Control.Applicative import Control.Arrow import Control.Monad import Control.Monad.ST import qualified Data.ByteString.Char8 as BS import Data.Char import Data.Foldable import Data.Functor import Data.Int import Data.List import Data.Maybe import Data.Monoid import Data.Ord import Data.Semigroup ( Max(..) , Min(..) , All(..) , Arg(..) ) import Data.Ratio -- import Data.Vector.Unboxing.Mutable ( Unboxable ) -- import qualified Data.Vector.Unboxing.Mutable as V import System.IO import Data.Proxy import GHC.TypeLits import GHC.Generics ( Generic ) import Data.Function -- import Data.List.HT ( mapAdjacent -- , isAscending -- ) -- import Control.Monad.Primitive ( PrimMonad(PrimState) ) import qualified Data.Set as S -- import qualified Data.Vector.Algorithms.Radix as VA -- import Text.Parsec.ByteString import GHC.OverloadedLabels -- import Control.Monad.Extra -- #if defined(LOCAL_ZER0STAR) -- {-# ANN module ("Hlint: ignore Unused LANGUAGE pragma" :: String) #-} -- {-# ANN module ("Hlint: ignore Reduce duplication" :: String) #-} -- #endif twice :: (a -> a -> b) -> a -> b twice f x = f x x both :: Arrow a => a b c -> a (b, b) (c, c) both = twice (***) both2 f (a1, b1) (a2, b2) = (f a1 a2, f b1 b2) readsLn :: Read a => IO [a] readsLn = mapM readIO . words =<< getLine getInt :: IO Int getInt = fst . fromJust . BS.readInt <$> BS.getLine getInts :: IO [Int] getInts = map (fst . fromJust . BS.readInt) . BS.words <$> BS.getLine getInteger :: IO Integer getInteger = fst . fromJust . BS.readInteger <$> BS.getLine getIntegers :: IO [Integer] getIntegers = map (fst . fromJust . BS.readInteger) . BS.words <$> BS.getLine main = do [n, k] <- getInts p <- getInts print . maximum . filter (<= k) . map (length . flip filter p . (<=)) $ [0 .. 401]