import std;

auto input()
{
    return readln().chomp();
}

alias sread = () => readln.chomp();

void main()
{
    long N;
    scan(N);
    // writeln(N);
    long 今の時間 = 0;
    long 今のx座標 = 0;
    long 今のy座標 = 0;
    long dist = 0;
    bool check = true;
    long time = 0;
    foreach (i; 0 .. N)
    {
        long T, X, Y;
        scan(T, X, Y);
        // writeln(T, X, Y);
        time = T - 今の時間; //3=6-0
        // writeln("TT:", T);
        // writeln("tt", t);
        // writeln("time", time);
        dist = abs(X - 今のx座標) + abs(Y - 今のy座標);
        //writeln("dist:", dist);

        if (dist > time)
        {
            check = false;

        }
        if ((time - dist) % 2 != 0)
        {

            check = false;

        }
        今のx座標 = X;
        今のy座標 = Y;
        今の時間 = T;

    }
    if (check)
    {
        writeln("Yes");
    }
    else
    {
        writeln("No");
    }

}

void scan(L...)(ref L A)
{
    auto l = readln.split;
    foreach (i, T; L)
    {
        A[i] = l[i].to!T;
    }
}
