def BlCannotGo(dt, dx, dy): ## 行けないならTrue

    dist = dx + dy

    if (dt % 2) != (dist % 2) or dist > dt:

        return True

    else:

        return False



def abs(x):

    if x>=0:

        return x

    else:

        return -x



if __name__ == '__main__':

    n = int(eval(input()))

    t = list(False for _  in range(n+1))

    x = list(False for _  in range(n+1))

    y = list(False for _  in range(n+1))

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

    for i in range(n):

        t[i+1], x[i+1], y[i+1] = list(map(int, input().split()))



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

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

        dx = abs(x[i] -  x[i-1])

        dy = abs(y[i] -  y[i-1])

        if BlCannotGo(dt, dx, dy):

            print('No')    

            exit()



    print('Yes')

def main():

    n = int(eval(input()))



    pt, px, py = 0, 0, 0

    for _ in range(n):

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

        dt = t - pt

        dx = abs(x - px)

        dy = abs(y - py)

        if (dx + dy) % 2 != dt % 2:

            print('No')

            return

        if (dx + dy) > dt:

            print('No')

            return

    print('Yes')





if __name__ == '__main__':

    main()

def BlCannotGo(dt, dx, dy):  ## 行けないならTrue
    dist = dx + dy
    if (dt % 2) != (dist % 2) or dist > dt:
        return True
    else:
        return False


def abs(x):
    if x >= 0:
        return x
    else:
        return -x


if __name__ == "__main__":
    n = int(eval(input()))
    t = list(False for _ in range(n + 1))
    x = list(False for _ in range(n + 1))
    y = list(False for _ in range(n + 1))
    t[0], x[0], y[0] = 0, 0, 0
    for i in range(n):
        t[i + 1], x[i + 1], y[i + 1] = list(map(int, input().split()))
    for i in range(1, n + 1):
        dt = t[i] - t[i - 1]
        dx = abs(x[i] - x[i - 1])
        dy = abs(y[i] - y[i - 1])
        if BlCannotGo(dt, dx, dy):
            print("No")
            exit()
    print("Yes")

def main():
    n = int(eval(input()))
    pt, px, py = 0, 0, 0
    for _ in range(n):
        t, x, y = list(map(int, input().split()))
        dt = t - pt
        dx = abs(x - px)
        dy = abs(y - py)
        if (dx + dy) % 2 != dt % 2:
            print("No")
            return
        if (dx + dy) > dt:
            print("No")
            return
    print("Yes")


if __name__ == "__main__":
    main()

-def BlCannotGo(dt, dx, dy):  ## 行けないならTrue -    dist = dx + dy -    if (dt % 2) != (dist % 2) or dist > dt: -        return True -    else: -        return False - - -def abs(x): -    if x >= 0: -        return x -    else: -        return -x +def main(): +    n = int(eval(input())) +    pt, px, py = 0, 0, 0 +    for _ in range(n): +        t, x, y = list(map(int, input().split())) +        dt = t - pt +        dx = abs(x - px) +        dy = abs(y - py) +        if (dx + dy) % 2 != dt % 2: +            print("No") +            return +        if (dx + dy) > dt: +            print("No") +            return +    print("Yes") -    n = int(eval(input())) -    t = list(False for _ in range(n + 1)) -    x = list(False for _ in range(n + 1)) -    y = list(False for _ in range(n + 1)) -    t[0], x[0], y[0] = 0, 0, 0 -    for i in range(n): -        t[i + 1], x[i + 1], y[i + 1] = list(map(int, input().split())) -    for i in range(1, n + 1): -        dt = t[i] - t[i - 1] -        dx = abs(x[i] - x[i - 1]) -        dy = abs(y[i] - y[i - 1]) -        if BlCannotGo(dt, dx, dy): -            print("No") -            exit() -    print("Yes") +    main()