
function Main(input) {
    var N = parseInt(input[0], 10);
    var TXY = input.slice(1).map(txy => {
        var list = txy.split(/\s/)
        return {
            t: list[0],
            x: list[1],
            y: list[2]
        };
    });

    var time = 0;
    var isTimeEven = false;
    var dist = 0;

    for (var i = 0; i < N; i++) {
        if (i === 0) {
            time = TXY[i].t;
            isTimeEven = time % 2 === 0;
            dist = Math.abs(TXY[i].x) + Math.abs(TXY[i].y);
            if (dist > time) {
                return console.log('No');
            } else {
                if (isTimeEven) {
                    if (dist % 2 !== 0) {
                        return console.log('No');
                    }
                } else {
                    if (dist % 2 !== 1) {
                        return console.log('No');
                    }
                }
            }
        } else {
            time = TXY[i].t - TXY[i - 1].t;
            isTimeEven = time % 2 === 0;
            dist = Math.abs(TXY[i].x - TXY[i - 1].x) + Math.abs(TXY[i].y - TXY[i -1].y);
            if (dist > time) {
                return console.log('No');
            } else {
                if (isTimeEven) {
                    if (dist % 2 !== 0) {
                        return console.log('No');
                    }
                } else {
                    if (dist % 2 !== 1) {
                        return console.log('No');
                    }
                }
            }
        }
    }

    console.log('Yes');
}

Main(require("fs").readFileSync("/dev/stdin", "utf8").trim().split(/\n/));