import Control.Monad
import qualified Data.ByteString.Char8 as B
import Data.Maybe (fromJust)

move :: [Int] -> Bool
move [t, x, y] = abs x + abs y <= t && (x + y) `mod` 2 == t `mod` 2
move _ = False

main :: IO ()
main = do
    n <- fst . fromJust . B.readInt <$> B.getLine
    route <- replicateM n $ map (fst . fromJust . B.readInt) . B.words <$> B.getLine
    putStrLn $ if all move (scanl (\[t, x, y] [tn, xn, yn] -> [tn - t, xn - x, yn - y]) [0, 0, 0] route)
                then "Yes"
                else "No"
