main = do
    n <- getLine >>= return . read 
    strlist <- sequence (take n (repeat getLine))
    let ans = solve n strlist
    putStrLn ans

solve :: Int -> [String] -> String
solve _ strings = if subA strings then "Yes" else "No"

subA :: [String] -> Bool
subA strings = and $ map subB tuples
    where tuples = subC $ map subE strings

subB :: (Int,Int,Int) -> Bool
subB (t,x,y) = t >= x+y && mod (x+y-t) 2 == 0

subC :: [(Int,Int,Int)] -> [(Int,Int,Int)]
subC = \xs -> zipWith subD xs ((0,0,0):xs)

subD ::  (Int,Int,Int) -> (Int,Int,Int) -> (Int,Int,Int)
subD (x,y,z) (a,b,c) = (x-a,y-b,z-c)

subF :: String -> [Int]
subF = map read . words

subE :: String -> (Int,Int,Int)
subE string = (\[a,b,c] -> (a,b,c)) (subF string)
