type Plan=[(Int,Int,Int)]

eater::(Int,Int,Int)->Plan->Bool
eater now [] = True
eater now ((t',x',y'):rest) = let (t,x,y) = now in
                       let dist = (abs (x'-x))+(abs (y'-y)) in
                       if (dist <= t'- t)&&(mod (dist - (t'-t)) 2 == 0) then eater (t',x',y') rest else False

n_get::Int -> IO [(Int,Int,Int)]
n_get 0 = return []
n_get n = do
  c<-getLine
  let t:x:y:[]=map read (words c)
  rest<-n_get (n-1)
  return ((t,x,y):rest)

main::IO()
main=do
 nc<-getLine
 let n = read nc
 plan<-n_get n
 putStr (if (eater (0,0,0) plan) then "Yes\n" else "No\n")