N = int(eval(input()))

P = [(0,0,0)] + [tuple(int(x) for x in input().split()) for _ in range(N)]



def travelable(p,q):

    time = q[0] - p[0]

    dist = abs(q[1]-p[1]) + abs(q[2]-p[2])

    if dist <= time and time%2 == dist%2:

        return True

    else:

        return False

        

print(('Yes' if all(travelable(p,q) for p,q in zip(P[:N],P[1:])) else 'No'))
from collections import namedtuple

plan = namedtuple('plan', ['time', 'x', 'y'])



def main():

    with open(0) as f:

        N = int(f.readline())

        plans = []

        for _ in range(N):

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

            plans.append(plan(t, x, y))

    current = plan(0, 0, 0)

    for p in plans:

        t = p.time - current.time

        way = abs(p.x-current.x) + abs(p.y-current.y)

        if t < way:

            print('No')

            return None

        if (t - way) & 1:

            print('No')

            return None

        current = p

    else:

        print('Yes')



main()
N = int(eval(input()))
P = [(0, 0, 0)] + [tuple(int(x) for x in input().split()) for _ in range(N)]


def travelable(p, q):
    time = q[0] - p[0]
    dist = abs(q[1] - p[1]) + abs(q[2] - p[2])
    if dist <= time and time % 2 == dist % 2:
        return True
    else:
        return False


print(("Yes" if all(travelable(p, q) for p, q in zip(P[:N], P[1:])) else "No"))

from collections import namedtuple

plan = namedtuple("plan", ["time", "x", "y"])


def main():
    with open(0) as f:
        N = int(f.readline())
        plans = []
        for _ in range(N):
            t, x, y = list(map(int, f.readline().split()))
            plans.append(plan(t, x, y))
    current = plan(0, 0, 0)
    for p in plans:
        t = p.time - current.time
        way = abs(p.x - current.x) + abs(p.y - current.y)
        if t < way:
            print("No")
            return None
        if (t - way) & 1:
            print("No")
            return None
        current = p
    else:
        print("Yes")


main()

-N = int(eval(input())) -P = [(0, 0, 0)] + [tuple(int(x) for x in input().split()) for _ in range(N)] +from collections import namedtuple + +plan = namedtuple("plan", ["time", "x", "y"]) -def travelable(p, q): -    time = q[0] - p[0] -    dist = abs(q[1] - p[1]) + abs(q[2] - p[2]) -    if dist <= time and time % 2 == dist % 2: -        return True +def main(): +    with open(0) as f: +        N = int(f.readline()) +        plans = [] +        for _ in range(N): +            t, x, y = list(map(int, f.readline().split())) +            plans.append(plan(t, x, y)) +    current = plan(0, 0, 0) +    for p in plans: +        t = p.time - current.time +        way = abs(p.x - current.x) + abs(p.y - current.y) +        if t < way: +            print("No") +            return None +        if (t - way) & 1: +            print("No") +            return None +        current = p -        return False +        print("Yes") -print(("Yes" if all(travelable(p, q) for p, q in zip(P[:N], P[1:])) else "No")) +main()