import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        Integer inputNum = Integer.parseInt(scanner.nextLine());
        String output = "Yes";

        List<TimeAndXY> list = new ArrayList<>();
        list.add(new TimeAndXY(0,0,0));

        for(int i=0; i<inputNum; i++){
            final TimeAndXY nextState = new TimeAndXY(scanner.nextLine());
            list.add(nextState);

        }
        scanner.close();
        for(int i=0; i<inputNum; i++){
            TimeAndXY lastState = list.get(i);
            TimeAndXY nextState = list.get(i+1);
            if( nextState.canMoveFrom(lastState) ){
                lastState = nextState;
            }
            else{
                output = "No";
                break;
            }
        }
        System.out.println(output);
    }

    public static class TimeAndXY {
        private final int time;
        private final int x;
        private final int y;
        public TimeAndXY(String input){
            String[] inputs = input.split(" ");
            this.time = Integer.parseInt(inputs[0]);
            this.x = Integer.parseInt(inputs[1]);
            this.y = Integer.parseInt(inputs[2]);
        }
        @Override
        public String toString(){
            return "t="+time+", x="+x+", y="+y;
        }


        public TimeAndXY(int time, int x, int y){
            this.time = time;
            this.x = x;
            this.y = y;
        }
        public boolean canMoveFrom(TimeAndXY moveFrom){
            int xmove = this.x - moveFrom.x;
            int ymove = this.y - moveFrom.y;
            int duration = this.time - moveFrom.time;
            int xymove = Math.abs(xmove) + Math.abs(ymove);
            if( xymove<=duration ){
                if(xymove%2==duration%2){
                    return true;
                }
            }
            return false;
        }
    }
} import java.util.ArrayList; ArrayList java.util import java.util.List; List java.util import java.util.Scanner; Scanner java.util public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        Integer inputNum = Integer.parseInt(scanner.nextLine());
        String output = "Yes";

        List<TimeAndXY> list = new ArrayList<>();
        list.add(new TimeAndXY(0,0,0));

        for(int i=0; i<inputNum; i++){
            final TimeAndXY nextState = new TimeAndXY(scanner.nextLine());
            list.add(nextState);

        }
        scanner.close();
        for(int i=0; i<inputNum; i++){
            TimeAndXY lastState = list.get(i);
            TimeAndXY nextState = list.get(i+1);
            if( nextState.canMoveFrom(lastState) ){
                lastState = nextState;
            }
            else{
                output = "No";
                break;
            }
        }
        System.out.println(output);
    }

    public static class TimeAndXY {
        private final int time;
        private final int x;
        private final int y;
        public TimeAndXY(String input){
            String[] inputs = input.split(" ");
            this.time = Integer.parseInt(inputs[0]);
            this.x = Integer.parseInt(inputs[1]);
            this.y = Integer.parseInt(inputs[2]);
        }
        @Override
        public String toString(){
            return "t="+time+", x="+x+", y="+y;
        }


        public TimeAndXY(int time, int x, int y){
            this.time = time;
            this.x = x;
            this.y = y;
        }
        public boolean canMoveFrom(TimeAndXY moveFrom){
            int xmove = this.x - moveFrom.x;
            int ymove = this.y - moveFrom.y;
            int duration = this.time - moveFrom.time;
            int xymove = Math.abs(xmove) + Math.abs(ymove);
            if( xymove<=duration ){
                if(xymove%2==duration%2){
                    return true;
                }
            }
            return false;
        }
    }
} Main public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        Integer inputNum = Integer.parseInt(scanner.nextLine());
        String output = "Yes";

        List<TimeAndXY> list = new ArrayList<>();
        list.add(new TimeAndXY(0,0,0));

        for(int i=0; i<inputNum; i++){
            final TimeAndXY nextState = new TimeAndXY(scanner.nextLine());
            list.add(nextState);

        }
        scanner.close();
        for(int i=0; i<inputNum; i++){
            TimeAndXY lastState = list.get(i);
            TimeAndXY nextState = list.get(i+1);
            if( nextState.canMoveFrom(lastState) ){
                lastState = nextState;
            }
            else{
                output = "No";
                break;
            }
        }
        System.out.println(output);
    } main {
        Scanner scanner = new Scanner(System.in);
        Integer inputNum = Integer.parseInt(scanner.nextLine());
        String output = "Yes";

        List<TimeAndXY> list = new ArrayList<>();
        list.add(new TimeAndXY(0,0,0));

        for(int i=0; i<inputNum; i++){
            final TimeAndXY nextState = new TimeAndXY(scanner.nextLine());
            list.add(nextState);

        }
        scanner.close();
        for(int i=0; i<inputNum; i++){
            TimeAndXY lastState = list.get(i);
            TimeAndXY nextState = list.get(i+1);
            if( nextState.canMoveFrom(lastState) ){
                lastState = nextState;
            }
            else{
                output = "No";
                break;
            }
        }
        System.out.println(output);
    } Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) Integer inputNum = Integer.parseInt(scanner.nextLine()); inputNum Integer.parseInt(scanner.nextLine()) Integer.parseInt Integer scanner.nextLine() scanner.nextLine scanner String output = "Yes"; output "Yes" List<TimeAndXY> list = new ArrayList<>(); list new ArrayList<>() list.add(new TimeAndXY(0,0,0)) list.add list new TimeAndXY(0,0,0) for(int i=0; i<inputNum; i++){
            final TimeAndXY nextState = new TimeAndXY(scanner.nextLine());
            list.add(nextState);

        } int i=0; int i=0; i 0 i<inputNum i inputNum i++ i++ i {
            final TimeAndXY nextState = new TimeAndXY(scanner.nextLine());
            list.add(nextState);

        } {
            final TimeAndXY nextState = new TimeAndXY(scanner.nextLine());
            list.add(nextState);

        } final TimeAndXY nextState = new TimeAndXY(scanner.nextLine()); nextState new TimeAndXY(scanner.nextLine()) list.add(nextState) list.add list nextState scanner.close() scanner.close scanner for(int i=0; i<inputNum; i++){
            TimeAndXY lastState = list.get(i);
            TimeAndXY nextState = list.get(i+1);
            if( nextState.canMoveFrom(lastState) ){
                lastState = nextState;
            }
            else{
                output = "No";
                break;
            }
        } int i=0; int i=0; i 0 i<inputNum i inputNum i++ i++ i {
            TimeAndXY lastState = list.get(i);
            TimeAndXY nextState = list.get(i+1);
            if( nextState.canMoveFrom(lastState) ){
                lastState = nextState;
            }
            else{
                output = "No";
                break;
            }
        } {
            TimeAndXY lastState = list.get(i);
            TimeAndXY nextState = list.get(i+1);
            if( nextState.canMoveFrom(lastState) ){
                lastState = nextState;
            }
            else{
                output = "No";
                break;
            }
        } TimeAndXY lastState = list.get(i); lastState list.get(i) list.get list i TimeAndXY nextState = list.get(i+1); nextState list.get(i+1) list.get list i+1 i 1 if( nextState.canMoveFrom(lastState) ){
                lastState = nextState;
            }
            else{
                output = "No";
                break;
            } nextState.canMoveFrom(lastState) nextState.canMoveFrom nextState lastState {
                lastState = nextState;
            } lastState = nextState lastState nextState {
                output = "No";
                break;
            } output = "No" output "No" break; System.out.println(output) System.out.println System.out System System.out output String[] args args public static class TimeAndXY {
        private final int time;
        private final int x;
        private final int y;
        public TimeAndXY(String input){
            String[] inputs = input.split(" ");
            this.time = Integer.parseInt(inputs[0]);
            this.x = Integer.parseInt(inputs[1]);
            this.y = Integer.parseInt(inputs[2]);
        }
        @Override
        public String toString(){
            return "t="+time+", x="+x+", y="+y;
        }


        public TimeAndXY(int time, int x, int y){
            this.time = time;
            this.x = x;
            this.y = y;
        }
        public boolean canMoveFrom(TimeAndXY moveFrom){
            int xmove = this.x - moveFrom.x;
            int ymove = this.y - moveFrom.y;
            int duration = this.time - moveFrom.time;
            int xymove = Math.abs(xmove) + Math.abs(ymove);
            if( xymove<=duration ){
                if(xymove%2==duration%2){
                    return true;
                }
            }
            return false;
        }
    } TimeAndXY private final int time; time private final int x; x private final int y; y public TimeAndXY(String input){
            String[] inputs = input.split(" ");
            this.time = Integer.parseInt(inputs[0]);
            this.x = Integer.parseInt(inputs[1]);
            this.y = Integer.parseInt(inputs[2]);
        } TimeAndXY {
            String[] inputs = input.split(" ");
            this.time = Integer.parseInt(inputs[0]);
            this.x = Integer.parseInt(inputs[1]);
            this.y = Integer.parseInt(inputs[2]);
        } String[] inputs = input.split(" "); inputs input.split(" ") input.split input " " this.time = Integer.parseInt(inputs[0]) this.time this this.time Integer.parseInt(inputs[0]) Integer.parseInt Integer inputs[0] inputs 0 this.x = Integer.parseInt(inputs[1]) this.x this this.x Integer.parseInt(inputs[1]) Integer.parseInt Integer inputs[1] inputs 1 this.y = Integer.parseInt(inputs[2]) this.y this this.y Integer.parseInt(inputs[2]) Integer.parseInt Integer inputs[2] inputs 2 String input input @Override
        public String toString(){
            return "t="+time+", x="+x+", y="+y;
        } toString {
            return "t="+time+", x="+x+", y="+y;
        } return "t="+time+", x="+x+", y="+y; "t="+time+", x="+x+", y="+y ", y=" x ", x=" "t="+time+", x="+x+", y="+y "t=" time ", x=" x ", y=" y public TimeAndXY(int time, int x, int y){
            this.time = time;
            this.x = x;
            this.y = y;
        } TimeAndXY {
            this.time = time;
            this.x = x;
            this.y = y;
        } this.time = time this.time this this.time time this.x = x this.x this this.x x this.y = y this.y this this.y y int time time int x x int y y public boolean canMoveFrom(TimeAndXY moveFrom){
            int xmove = this.x - moveFrom.x;
            int ymove = this.y - moveFrom.y;
            int duration = this.time - moveFrom.time;
            int xymove = Math.abs(xmove) + Math.abs(ymove);
            if( xymove<=duration ){
                if(xymove%2==duration%2){
                    return true;
                }
            }
            return false;
        } canMoveFrom {
            int xmove = this.x - moveFrom.x;
            int ymove = this.y - moveFrom.y;
            int duration = this.time - moveFrom.time;
            int xymove = Math.abs(xmove) + Math.abs(ymove);
            if( xymove<=duration ){
                if(xymove%2==duration%2){
                    return true;
                }
            }
            return false;
        } int xmove = this.x - moveFrom.x; xmove this.x - moveFrom.x this.x this this.x moveFrom.x moveFrom moveFrom.x int ymove = this.y - moveFrom.y; ymove this.y - moveFrom.y this.y this this.y moveFrom.y moveFrom moveFrom.y int duration = this.time - moveFrom.time; duration this.time - moveFrom.time this.time this this.time moveFrom.time moveFrom moveFrom.time int xymove = Math.abs(xmove) + Math.abs(ymove); xymove Math.abs(xmove) + Math.abs(ymove) Math.abs(xmove) Math.abs Math xmove Math.abs(ymove) Math.abs Math ymove if( xymove<=duration ){
                if(xymove%2==duration%2){
                    return true;
                }
            } xymove<=duration xymove duration {
                if(xymove%2==duration%2){
                    return true;
                }
            } if(xymove%2==duration%2){
                    return true;
                } xymove%2==duration%2 xymove%2 xymove 2 duration%2 duration 2 {
                    return true;
                } return true; true return false; false TimeAndXY moveFrom moveFrom public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        Integer inputNum = Integer.parseInt(scanner.nextLine());
        String output = "Yes";

        List<TimeAndXY> list = new ArrayList<>();
        list.add(new TimeAndXY(0,0,0));

        for(int i=0; i<inputNum; i++){
            final TimeAndXY nextState = new TimeAndXY(scanner.nextLine());
            list.add(nextState);

        }
        scanner.close();
        for(int i=0; i<inputNum; i++){
            TimeAndXY lastState = list.get(i);
            TimeAndXY nextState = list.get(i+1);
            if( nextState.canMoveFrom(lastState) ){
                lastState = nextState;
            }
            else{
                output = "No";
                break;
            }
        }
        System.out.println(output);
    }

    public static class TimeAndXY {
        private final int time;
        private final int x;
        private final int y;
        public TimeAndXY(String input){
            String[] inputs = input.split(" ");
            this.time = Integer.parseInt(inputs[0]);
            this.x = Integer.parseInt(inputs[1]);
            this.y = Integer.parseInt(inputs[2]);
        }
        @Override
        public String toString(){
            return "t="+time+", x="+x+", y="+y;
        }


        public TimeAndXY(int time, int x, int y){
            this.time = time;
            this.x = x;
            this.y = y;
        }
        public boolean canMoveFrom(TimeAndXY moveFrom){
            int xmove = this.x - moveFrom.x;
            int ymove = this.y - moveFrom.y;
            int duration = this.time - moveFrom.time;
            int xymove = Math.abs(xmove) + Math.abs(ymove);
            if( xymove<=duration ){
                if(xymove%2==duration%2){
                    return true;
                }
            }
            return false;
        }
    }
} public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        Integer inputNum = Integer.parseInt(scanner.nextLine());
        String output = "Yes";

        List<TimeAndXY> list = new ArrayList<>();
        list.add(new TimeAndXY(0,0,0));

        for(int i=0; i<inputNum; i++){
            final TimeAndXY nextState = new TimeAndXY(scanner.nextLine());
            list.add(nextState);

        }
        scanner.close();
        for(int i=0; i<inputNum; i++){
            TimeAndXY lastState = list.get(i);
            TimeAndXY nextState = list.get(i+1);
            if( nextState.canMoveFrom(lastState) ){
                lastState = nextState;
            }
            else{
                output = "No";
                break;
            }
        }
        System.out.println(output);
    }

    public static class TimeAndXY {
        private final int time;
        private final int x;
        private final int y;
        public TimeAndXY(String input){
            String[] inputs = input.split(" ");
            this.time = Integer.parseInt(inputs[0]);
            this.x = Integer.parseInt(inputs[1]);
            this.y = Integer.parseInt(inputs[2]);
        }
        @Override
        public String toString(){
            return "t="+time+", x="+x+", y="+y;
        }


        public TimeAndXY(int time, int x, int y){
            this.time = time;
            this.x = x;
            this.y = y;
        }
        public boolean canMoveFrom(TimeAndXY moveFrom){
            int xmove = this.x - moveFrom.x;
            int ymove = this.y - moveFrom.y;
            int duration = this.time - moveFrom.time;
            int xymove = Math.abs(xmove) + Math.abs(ymove);
            if( xymove<=duration ){
                if(xymove%2==duration%2){
                    return true;
                }
            }
            return false;
        }
    }
} Main
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        Integer inputNum = Integer.parseInt(scanner.nextLine());
        String output = "Yes";

        List<TimeAndXY> list = new ArrayList<>();
        list.add(new TimeAndXY(0,0,0));

        for(int i=0; i<inputNum; i++){
            final TimeAndXY nextState = new TimeAndXY(scanner.nextLine());
            list.add(nextState);

        }
        scanner.close();
        for(int i=0; i<inputNum; i++){
            TimeAndXY lastState = list.get(i);
            TimeAndXY nextState = list.get(i+1);
            if( nextState.canMoveFrom(lastState) ){
                lastState = nextState;
            }
            else{
                output = "No";
                break;
            }
        }
        System.out.println(output);
    }

    public static class TimeAndXY {
        private final int time;
        private final int x;
        private final int y;
        public TimeAndXY(String input){
            String[] inputs = input.split(" ");
            this.time = Integer.parseInt(inputs[0]);
            this.x = Integer.parseInt(inputs[1]);
            this.y = Integer.parseInt(inputs[2]);
        }
        @Override
        public String toString(){
            return "t="+time+", x="+x+", y="+y;
        }


        public TimeAndXY(int time, int x, int y){
            this.time = time;
            this.x = x;
            this.y = y;
        }
        public boolean canMoveFrom(TimeAndXY moveFrom){
            int xmove = this.x - moveFrom.x;
            int ymove = this.y - moveFrom.y;
            int duration = this.time - moveFrom.time;
            int xymove = Math.abs(xmove) + Math.abs(ymove);
            if( xymove<=duration ){
                if(xymove%2==duration%2){
                    return true;
                }
            }
            return false;
        }
    }
}
