#

# NoKnowledgeGG @YlePhan

# ('ω')

#

#import collections

#aa = collections.Counter(a) # list to list

def readInts():

  return list(map(int,input().split()))

mod = 10**9 + 7

def main():

    n = int(eval(input()))

    T = []

    X = []

    Y = []

    for i in range(n):

        t,x,y = readInts()

        T.append(t)

        X.append(x)

        Y.append(y)

    cx,cy,ct = 0,0,0

    for i in range(n):

        dist_place = abs(X[i] - cx) + abs(Y[i] - cy)

        dist_time = abs(T[i] - ct)

        if dist_time >= dist_place and (dist_time - dist_place) % 2 == 0:

            cx = X[i]

            cy = Y[i]

            ct = T[i]



            pass

        else:

            print('No')

            exit()

    print('Yes')







if __name__ == '__main__':

  main()

#from statistics import median

#import collections

#aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]

from fractions import gcd

from itertools import combinations,permutations,accumulate # (string,3) 3回

#from collections import deque

from collections import deque,defaultdict,Counter

import decimal

import re

#import bisect

#

#    d = m - k[i] - k[j]

#    if kk[bisect.bisect_right(kk,d) - 1] == d:

#

#

#

# pythonで無理なときは、pypyでやると正解するかも！！

#

#



import sys

sys.setrecursionlimit(10000000)

mod = 10**9 + 7

#mod = 9982443453

def readInts():

  return list(map(int,input().split()))

def I():

  return int(eval(input()))



n = int(eval(input()))

T = []

X = []

Y = []

for i in range(n):

    t,x,y = readInts()

    T.append(t)

    X.append(x)

    Y.append(y)

cx,cy,ct = 0,0,0

for i in range(n):

    dist_place = abs(X[i] - cx) + abs(Y[i] - cy)

    dist_time = abs(T[i] - ct)

    if dist_time >= dist_place and (dist_time - dist_place) % 2 == 0:

        cx = X[i]

        cy = Y[i]

        ct = T[i]



        pass

    else:

        print('No')

        exit()

print('Yes')

#
# NoKnowledgeGG @YlePhan
# ('ω')
#
# import collections
# aa = collections.Counter(a) # list to list
def readInts():
    return list(map(int, input().split()))


mod = 10**9 + 7


def main():
    n = int(eval(input()))
    T = []
    X = []
    Y = []
    for i in range(n):
        t, x, y = readInts()
        T.append(t)
        X.append(x)
        Y.append(y)
    cx, cy, ct = 0, 0, 0
    for i in range(n):
        dist_place = abs(X[i] - cx) + abs(Y[i] - cy)
        dist_time = abs(T[i] - ct)
        if dist_time >= dist_place and (dist_time - dist_place) % 2 == 0:
            cx = X[i]
            cy = Y[i]
            ct = T[i]
            pass
        else:
            print("No")
            exit()
    print("Yes")


if __name__ == "__main__":
    main()

# from statistics import median
# import collections
# aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]
from fractions import gcd
from itertools import combinations, permutations, accumulate  # (string,3) 3回

# from collections import deque
from collections import deque, defaultdict, Counter
import decimal
import re

# import bisect
#
#    d = m - k[i] - k[j]
#    if kk[bisect.bisect_right(kk,d) - 1] == d:
#
#
#
# pythonで無理なときは、pypyでやると正解するかも！！
#
#
import sys

sys.setrecursionlimit(10000000)
mod = 10**9 + 7
# mod = 9982443453
def readInts():
    return list(map(int, input().split()))


def I():
    return int(eval(input()))


n = int(eval(input()))
T = []
X = []
Y = []
for i in range(n):
    t, x, y = readInts()
    T.append(t)
    X.append(x)
    Y.append(y)
cx, cy, ct = 0, 0, 0
for i in range(n):
    dist_place = abs(X[i] - cx) + abs(Y[i] - cy)
    dist_time = abs(T[i] - ct)
    if dist_time >= dist_place and (dist_time - dist_place) % 2 == 0:
        cx = X[i]
        cy = Y[i]
        ct = T[i]
        pass
    else:
        print("No")
        exit()
print("Yes")

+# from statistics import median +# import collections +# aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0] +from fractions import gcd +from itertools import combinations, permutations, accumulate  # (string,3) 3回 + +# from collections import deque +from collections import deque, defaultdict, Counter +import decimal +import re + +# import bisect -# NoKnowledgeGG @YlePhan -# ('ω') +#    d = m - k[i] - k[j] +#    if kk[bisect.bisect_right(kk,d) - 1] == d: -# import collections -# aa = collections.Counter(a) # list to list +# +# +# pythonで無理なときは、pypyでやると正解するかも！！ +# +# +import sys + +sys.setrecursionlimit(10000000) +mod = 10**9 + 7 +# mod = 9982443453 -mod = 10**9 + 7 +def I(): +    return int(eval(input())) -def main(): -    n = int(eval(input())) -    T = [] -    X = [] -    Y = [] -    for i in range(n): -        t, x, y = readInts() -        T.append(t) -        X.append(x) -        Y.append(y) -    cx, cy, ct = 0, 0, 0 -    for i in range(n): -        dist_place = abs(X[i] - cx) + abs(Y[i] - cy) -        dist_time = abs(T[i] - ct) -        if dist_time >= dist_place and (dist_time - dist_place) % 2 == 0: -            cx = X[i] -            cy = Y[i] -            ct = T[i] -            pass -        else: -            print("No") -            exit() -    print("Yes") - - -if __name__ == "__main__": -    main() +n = int(eval(input())) +T = [] +X = [] +Y = [] +for i in range(n): +    t, x, y = readInts() +    T.append(t) +    X.append(x) +    Y.append(y) +cx, cy, ct = 0, 0, 0 +for i in range(n): +    dist_place = abs(X[i] - cx) + abs(Y[i] - cy) +    dist_time = abs(T[i] - ct) +    if dist_time >= dist_place and (dist_time - dist_place) % 2 == 0: +        cx = X[i] +        cy = Y[i] +        ct = T[i] +        pass +    else: +        print("No") +        exit() +print("Yes")