{-# OPTIONS_GHC -O2 -funbox-strict-fields #-}
import qualified Data.ByteString.Char8 as BS
import           Data.Maybe            (fromJust)

main :: IO ()
main = do
  n <- readLn
  txys <- map (map readInt . BS.words) . BS.lines <$> BS.getContents
  putStrLn $ if solve n txys then "Yes" else "No"

solve :: Int -> [[Int]] -> Bool
solve _ txys = all travelable $ zip ([0, 0, 0]:txys) txys

travelable :: ([Int], [Int]) -> Bool
travelable ([t, x, y], [t', x', y']) = dx + dy <= dt && even (dt - dx - dy) where
  dx = x' - x
  dy = y' - y
  dt = t' - t

readInt :: BS.ByteString -> Int
readInt = fst . fromJust . BS.readInt
