import std.algorithm;
import std.array;
import std.conv;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

int readint() { return readln.chomp.to!int; }
int[] readints() { return readln.split.to!(int[]); }

alias Plan = Tuple!(int, "t", int, "x", int, "y");

bool calc(Plan[] plans) {
    int t = 0;
    int x = 0;
    int y = 0;

    foreach (p; plans) {
        int dt = p.t - t;
        int dx = abs(x - p.x);
        int dy = abs(y - p.y);

        if (dt < dx + dy) return false;
        if ((dt - (dx + dy)) % 2 != 0) return false;

        t = p.t;
        x = p.x;
        y = p.y;
    }
    return true;
}

void main() {
    int n = readint;
    Plan[] plans;
    for (int i = 0; i < n; i++) {
        auto txy = readints;
        plans ~= Plan(txy[0], txy[1], txy[2]);
    }

    writeln(calc(plans) ? "Yes" : "No");
}