import Data.Maybe import Data.IORef import qualified Data.ByteString.Char8 as B import Control.Monad import Control.Applicative main :: IO () main = do rd <- intReader [q] <- rd 1 replicateM_ q $ do [n] <- rd 1 ps <- replicateM n ((\[x, y] -> (x, y)) <$> rd 2) putStrLn $ if ok ps then "YES" else "NO" ok :: [(Int, Int)] -> Bool ok ps = all check ps where x1 = minimum (map fst ps) x2 = maximum (map fst ps) y1 = minimum (map snd ps) y2 = maximum (map snd ps) check (x, y) = x == x1 || x == x2 || y == y1 || y == y2 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)