{-# OPTIONS_GHC -O #-}

import Control.Monad
import Data.List
import qualified Data.ByteString.Char8 as B

main = do
    n<-readLn :: IO Int
    ms <- replicateM n $ unfoldr (B.readInt.B.dropWhile (==' ')) <$> B.getLine
    --
    putStrLn $ if all fst $ scanl' chkmv (True,(0,0)) ms then "Yes" else "No"

chkmv (_, (x,y)) [t,xi,yi] =
    if and [t>=dx+dy, even $ t-dx+dy] then (True,(x,y)) else (False, (x,y))
    where
        dx = abs $ xi-x
        dy = abs $ yi-y