import Data.Maybe import Data.IORef import qualified Data.ByteString.Char8 as B main :: IO () main = do f <- intReader [n] <- f 1 xs <- sequence . replicate n $ f 2 :: IO [[Int]] let a = head . head $ xs let b = last . head $ xs putStrLn $ if (all (== a) . map head $ xs) || (all (== b) . map last $ xs) then "YES" else "NO" intReader :: IO (Int -> IO [Int]) intReader = do ws <- fmap ((concatMap B.words) . B.lines) B.getContents >>= newIORef return $ \n -> do xs <- readIORef ws writeIORef ws (drop n xs) return (take n . map (fst . fromJust . B.readInt) $ xs)