output_description: If AtCoDeer can carry out his plan, print `Yes`; if he cannot, print `No`.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      t_1 x_1 y_1
      t_2 x_2 y_2
      :
      t_N x_N y_N
attempt: # -*- coding: utf-8 -*-
  import sys
  import math
  import os
  import itertools
  import string
  import heapq
  import _collections
  from collections import Counter
  from collections import defaultdict
  from functools import lru_cache
  import bisect
  
  
  class Scanner:
      def int():
          return int(sys.stdin.readline().rstrip())
  
      def string():
          return sys.stdin.readline().rstrip()
  
      def map_int():
          return [int(x) for x in Scanner.string().split()]
  
      def string_list(n):
          return [input() for i in range(n)]
  
      def int_list_list(n):
          return [Scanner.map_int() for i in range(n)]
  
      def int_cols_list(n):
          return [int(input()) for i in range(n)]
  
  
  class Math:
      def gcd(a, b):
          if b == 0:
              return a
          return Math.gcd(b, a % b)
  
      def lcm(a, b):
          return (a * b) // Math.gcd(a, b)
  
      def roundUp(a, b):
          return -(-a // b)
  
      def toUpperMultiple(a, x):
          return Math.roundUp(a, x) * x
  
      def toLowerMultiple(a, x):
          return (a // x) * x
  
      def nearPow2(n):
          if n <= 0:
              return 0
          if n & (n - 1) == 0:
              return n
          ret = 1
          while n > 0:
              ret <<= 1
              n >>= 1
          return ret
  
      def isPrime(n):
          if n < 2:
              return False
          if n == 2:
              return True
          if n % 2 == 0:
              return False
          d = int(n**0.5) + 1
          for i in range(3, d + 1, 2):
              if n % i == 0:
                  return False
          return True
  
  
  MOD = int(1e09) + 7
  
  
  def main():
      sys.stdin = open("sample.txt")
      N = Scanner.int()
      T = Scanner.int_list_list(N)
      x, y, t = 0, 0, 0
      for i in T:
          len = abs(i[1] - x) + abs(i[2] - y)
          time = i[0] - t
          if len <= time and len % 2 == time % 2:
              t, x, y = i
          else:
              print("No")
              return
      print("Yes")
      return
  
  
  if __name__ == "__main__":
      main()
  
problem_description: Statement
  
  AtCoDeer the deer is going on a trip in a two-dimensional plane. In his plan,
  he will depart from point (0, 0) at time 0, then for each i between 1 and N
  (inclusive), he will visit point (x_i,y_i) at time t_i.
  
  If AtCoDeer is at point (x, y) at time t, he can be at one of the following
  points at time t+1: (x+1,y), (x-1,y), (x,y+1) and (x,y-1). Note that **he
  cannot stay at his place**. Determine whether he can carry out his plan.
samples: [{"input": "2\n    3 1 2\n    6 1 1", "output": "Yes\n    \n\nFor example, he can travel as follows: (0,0), (0,1), (1,1), (1,2), (1,1),\n(1,0), then (1,1).\n\n* * *"}, {"input": "1\n    2 100 100", "output": "No\n    \n\nIt is impossible to be at (100,100) two seconds after being at (0,0).\n\n* * *"}, {"input": "2\n    5 1 1\n    100 1 1", "output": "No"}]