import sys

input = sys.stdin.readline



class Deer:

    def __init__(self):

        self.x = 0

        self.y = 0

        self.t = 0



    def move(self, ti, xi, yi):

        time_interval = ti - self.t

        manhattan_distance = abs(xi - self.x) + abs(yi - self.y)

        val = time_interval - manhattan_distance

        if (val >= 0) and (val % 2 == 0):

            self.x = xi

            self.y = yi

            self.t = ti

            return True

        else:

            return False



AtCoDeer = Deer()

N = int(eval(input()))

flag = True

for _ in range(N):

    ti, xi, yi = list(map(int, input().split()))

    flag = flag and AtCoDeer.move(ti, xi, yi)





if flag:

    print('Yes')

else:

    print('No')



import sys

input = sys.stdin.readline



N = int(eval(input()))

flag = True

for _ in range(N):

    t, x, y = list(map(int, input().split()))

    if (t < x + y) or (x + y + t) % 2:

        flag = False





if flag:

    print('Yes')

else:

    print('No')



import sys

input = sys.stdin.readline


class Deer:
    def __init__(self):
        self.x = 0
        self.y = 0
        self.t = 0

    def move(self, ti, xi, yi):
        time_interval = ti - self.t
        manhattan_distance = abs(xi - self.x) + abs(yi - self.y)
        val = time_interval - manhattan_distance
        if (val >= 0) and (val % 2 == 0):
            self.x = xi
            self.y = yi
            self.t = ti
            return True
        else:
            return False


AtCoDeer = Deer()
N = int(eval(input()))
flag = True
for _ in range(N):
    ti, xi, yi = list(map(int, input().split()))
    flag = flag and AtCoDeer.move(ti, xi, yi)
if flag:
    print("Yes")
else:
    print("No")

import sys

input = sys.stdin.readline
N = int(eval(input()))
flag = True
for _ in range(N):
    t, x, y = list(map(int, input().split()))
    if (t < x + y) or (x + y + t) % 2:
        flag = False
if flag:
    print("Yes")
else:
    print("No")

- - -class Deer: -    def __init__(self): -        self.x = 0 -        self.y = 0 -        self.t = 0 - -    def move(self, ti, xi, yi): -        time_interval = ti - self.t -        manhattan_distance = abs(xi - self.x) + abs(yi - self.y) -        val = time_interval - manhattan_distance -        if (val >= 0) and (val % 2 == 0): -            self.x = xi -            self.y = yi -            self.t = ti -            return True -        else: -            return False - - -AtCoDeer = Deer() -    ti, xi, yi = list(map(int, input().split())) -    flag = flag and AtCoDeer.move(ti, xi, yi) +    t, x, y = list(map(int, input().split())) +    if (t < x + y) or (x + y + t) % 2: +        flag = False