n = int(eval(input()))

t, x, y = 0, 0, 0

ans = "Yes"

for i in range(1, n+1):

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

  displacements = (xi - x) + (yi - y)

  dist = abs(displacements)

  dt = ti - t

  if dt >= dist and (dt - dist) % 2 == 0:

    t, x, y = ti, xi, yi

  else:

    ans = "No"

 

print(ans)
#                         author:  kagemeka 

#                         created: 2019-11-06 12:47:30(JST)

import sys

# import collections

# import math

# import string

# import bisect

# import re

# import itertools

# import statistics



def main():

    n, *txy = (int(x) for x in sys.stdin.read().split())

    t, x, y = [0], [0], [0]

    for i in range(0, n * 3, 3):

        t.append(txy[i])

        x.append(txy[i+1])

        y.append(txy[i+2])

    for i in range(n):

        dt = t[i+1] - t[i]

        distx = abs(x[i+1] - x[i])

        disty = abs(y[i+1] - y[i])

        if dt - (distx + disty) >= 0 and (dt - (distx + disty)) % 2 == 0:

            continue

        else:

            ans = 'No'        

            break

    else:

        ans = 'Yes'

    

    print(ans)



if __name__ == "__main__":

    # execute only if run as a script

    main()

n = int(eval(input()))
t, x, y = 0, 0, 0
ans = "Yes"
for i in range(1, n + 1):
    ti, xi, yi = list(map(int, input().split()))
    displacements = (xi - x) + (yi - y)
    dist = abs(displacements)
    dt = ti - t
    if dt >= dist and (dt - dist) % 2 == 0:
        t, x, y = ti, xi, yi
    else:
        ans = "No"
print(ans)

#                         author:  kagemeka
#                         created: 2019-11-06 12:47:30(JST)
import sys

# import collections
# import math
# import string
# import bisect
# import re
# import itertools
# import statistics
def main():
    n, *txy = (int(x) for x in sys.stdin.read().split())
    t, x, y = [0], [0], [0]
    for i in range(0, n * 3, 3):
        t.append(txy[i])
        x.append(txy[i + 1])
        y.append(txy[i + 2])
    for i in range(n):
        dt = t[i + 1] - t[i]
        distx = abs(x[i + 1] - x[i])
        disty = abs(y[i + 1] - y[i])
        if dt - (distx + disty) >= 0 and (dt - (distx + disty)) % 2 == 0:
            continue
        else:
            ans = "No"
            break
    else:
        ans = "Yes"
    print(ans)


if __name__ == "__main__":
    # execute only if run as a script
    main()

-n = int(eval(input())) -t, x, y = 0, 0, 0 -ans = "Yes" -for i in range(1, n + 1): -    ti, xi, yi = list(map(int, input().split())) -    displacements = (xi - x) + (yi - y) -    dist = abs(displacements) -    dt = ti - t -    if dt >= dist and (dt - dist) % 2 == 0: -        t, x, y = ti, xi, yi +#                         author:  kagemeka +#                         created: 2019-11-06 12:47:30(JST) +import sys + +# import collections +# import math +# import string +# import bisect +# import re +# import itertools +# import statistics +def main(): +    n, *txy = (int(x) for x in sys.stdin.read().split()) +    t, x, y = [0], [0], [0] +    for i in range(0, n * 3, 3): +        t.append(txy[i]) +        x.append(txy[i + 1]) +        y.append(txy[i + 2]) +    for i in range(n): +        dt = t[i + 1] - t[i] +        distx = abs(x[i + 1] - x[i]) +        disty = abs(y[i + 1] - y[i]) +        if dt - (distx + disty) >= 0 and (dt - (distx + disty)) % 2 == 0: +            continue +        else: +            ans = "No" +            break -        ans = "No" -print(ans) +        ans = "Yes" +    print(ans) + + +if __name__ == "__main__": +    # execute only if run as a script +    main()