module Main where import Control.Monad import Control.Applicative import Data.Maybe import Data.List import qualified Text.Printf import qualified Data.ByteString.Char8 as BC import qualified Data.ByteString as BC import Data.Array.Unboxed (UArray, (!), listArray) import qualified Data.Array.Unboxed as UArray ------------------------------------------ main :: IO () main = do [n, m] <- readInts rawStats <- replicateM m $ readInts let stat0 = replicate n 0 stats = map (listArray (0, n-1)) $ scanl' (zipWith (+)) stat0 rawStats res = any (check777 n) stats putStrLn $ if res then "YES" else "NO" check777 :: Int -> UArray Int Int -> Bool check777 ub stat = f 0 0 0 where f l r acc | r == ub && l == ub = False | acc == 777 = True | r == ub = f (l+1) r (acc - (stat ! l)) | acc < 777 = f l (r+1) (acc + (stat ! r)) | otherwise = f (l+1) r (acc - (stat ! l)) ------------------------------------------ {- Int input -} parseInt :: BC.ByteString -> Int parseInt = fst . fromJust . BC.readInt parseInts :: BC.ByteString -> [Int] parseInts = map parseInt <$> BC.words readInt :: IO Int readInt = parseInt <$> BC.getLine readInts :: IO [Int] readInts = parseInts <$> BC.getLine {- Double Formatting -} doubleFmt :: Double -> String doubleFmt = Text.Printf.printf "%.12f"