import java.util.*;
import java.util.stream.Collectors;

class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
      
        int n = sc.nextInt();
        ArrayList<Point> points = new ArrayList<>();
        for(int i = 0; i < n; i++) {
            points.add(new Point(sc.nextInt(), sc.nextInt(), sc.nextInt()));
        }
      
        Point beforePoint = new Point(0, 0, 0);
        boolean isFail = false;
        for (Point point : points) {
            int diffTime = point.getTime() - beforePoint.getTime();
            int diffX = point.getX() - beforePoint.getX();
            int diffY = point.getY() - beforePoint.getY();

            if (diffX + diffY > diffTime) {
                isFail = true;
                break;
            }

            if (diffTime % 2 == 0 && (diffX + diffY) % 2 != 0) {
                isFail = true;
                break;

            } else if (diffTime % 2 != 0 && (diffX + diffY) % 2 == 0) {
                isFail = true;
                break;

            }

            beforePoint = point;

        }
        if (isFail) {
            System.out.println("No");

        } else {
            System.out.println("Yes");

        }
    }
    public static class Point {
        private int time;
        private int x;
        private int y;

        public int getTime() {
            return time;
        }

        public int getX() {
            return x;
        }

        public int getY() {
            return y;
        }

        public Point(int time, int x, int y) {
            this.time = time;
            this.x = x;
            this.y = y;
        }
    }

} import java.util.*; util.* java import java.util.stream.Collectors; Collectors java.util.stream class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
      
        int n = sc.nextInt();
        ArrayList<Point> points = new ArrayList<>();
        for(int i = 0; i < n; i++) {
            points.add(new Point(sc.nextInt(), sc.nextInt(), sc.nextInt()));
        }
      
        Point beforePoint = new Point(0, 0, 0);
        boolean isFail = false;
        for (Point point : points) {
            int diffTime = point.getTime() - beforePoint.getTime();
            int diffX = point.getX() - beforePoint.getX();
            int diffY = point.getY() - beforePoint.getY();

            if (diffX + diffY > diffTime) {
                isFail = true;
                break;
            }

            if (diffTime % 2 == 0 && (diffX + diffY) % 2 != 0) {
                isFail = true;
                break;

            } else if (diffTime % 2 != 0 && (diffX + diffY) % 2 == 0) {
                isFail = true;
                break;

            }

            beforePoint = point;

        }
        if (isFail) {
            System.out.println("No");

        } else {
            System.out.println("Yes");

        }
    }
    public static class Point {
        private int time;
        private int x;
        private int y;

        public int getTime() {
            return time;
        }

        public int getX() {
            return x;
        }

        public int getY() {
            return y;
        }

        public Point(int time, int x, int y) {
            this.time = time;
            this.x = x;
            this.y = y;
        }
    }

} Main public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
      
        int n = sc.nextInt();
        ArrayList<Point> points = new ArrayList<>();
        for(int i = 0; i < n; i++) {
            points.add(new Point(sc.nextInt(), sc.nextInt(), sc.nextInt()));
        }
      
        Point beforePoint = new Point(0, 0, 0);
        boolean isFail = false;
        for (Point point : points) {
            int diffTime = point.getTime() - beforePoint.getTime();
            int diffX = point.getX() - beforePoint.getX();
            int diffY = point.getY() - beforePoint.getY();

            if (diffX + diffY > diffTime) {
                isFail = true;
                break;
            }

            if (diffTime % 2 == 0 && (diffX + diffY) % 2 != 0) {
                isFail = true;
                break;

            } else if (diffTime % 2 != 0 && (diffX + diffY) % 2 == 0) {
                isFail = true;
                break;

            }

            beforePoint = point;

        }
        if (isFail) {
            System.out.println("No");

        } else {
            System.out.println("Yes");

        }
    } main {
        Scanner sc = new Scanner(System.in);
      
        int n = sc.nextInt();
        ArrayList<Point> points = new ArrayList<>();
        for(int i = 0; i < n; i++) {
            points.add(new Point(sc.nextInt(), sc.nextInt(), sc.nextInt()));
        }
      
        Point beforePoint = new Point(0, 0, 0);
        boolean isFail = false;
        for (Point point : points) {
            int diffTime = point.getTime() - beforePoint.getTime();
            int diffX = point.getX() - beforePoint.getX();
            int diffY = point.getY() - beforePoint.getY();

            if (diffX + diffY > diffTime) {
                isFail = true;
                break;
            }

            if (diffTime % 2 == 0 && (diffX + diffY) % 2 != 0) {
                isFail = true;
                break;

            } else if (diffTime % 2 != 0 && (diffX + diffY) % 2 == 0) {
                isFail = true;
                break;

            }

            beforePoint = point;

        }
        if (isFail) {
            System.out.println("No");

        } else {
            System.out.println("Yes");

        }
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc ArrayList<Point> points = new ArrayList<>(); points new ArrayList<>() for(int i = 0; i < n; i++) {
            points.add(new Point(sc.nextInt(), sc.nextInt(), sc.nextInt()));
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            points.add(new Point(sc.nextInt(), sc.nextInt(), sc.nextInt()));
        } {
            points.add(new Point(sc.nextInt(), sc.nextInt(), sc.nextInt()));
        } points.add(new Point(sc.nextInt(), sc.nextInt(), sc.nextInt())) points.add points new Point(sc.nextInt(), sc.nextInt(), sc.nextInt()) Point beforePoint = new Point(0, 0, 0); beforePoint new Point(0, 0, 0) boolean isFail = false; isFail false for (Point point : points) {
            int diffTime = point.getTime() - beforePoint.getTime();
            int diffX = point.getX() - beforePoint.getX();
            int diffY = point.getY() - beforePoint.getY();

            if (diffX + diffY > diffTime) {
                isFail = true;
                break;
            }

            if (diffTime % 2 == 0 && (diffX + diffY) % 2 != 0) {
                isFail = true;
                break;

            } else if (diffTime % 2 != 0 && (diffX + diffY) % 2 == 0) {
                isFail = true;
                break;

            }

            beforePoint = point;

        } Point point points {
            int diffTime = point.getTime() - beforePoint.getTime();
            int diffX = point.getX() - beforePoint.getX();
            int diffY = point.getY() - beforePoint.getY();

            if (diffX + diffY > diffTime) {
                isFail = true;
                break;
            }

            if (diffTime % 2 == 0 && (diffX + diffY) % 2 != 0) {
                isFail = true;
                break;

            } else if (diffTime % 2 != 0 && (diffX + diffY) % 2 == 0) {
                isFail = true;
                break;

            }

            beforePoint = point;

        } {
            int diffTime = point.getTime() - beforePoint.getTime();
            int diffX = point.getX() - beforePoint.getX();
            int diffY = point.getY() - beforePoint.getY();

            if (diffX + diffY > diffTime) {
                isFail = true;
                break;
            }

            if (diffTime % 2 == 0 && (diffX + diffY) % 2 != 0) {
                isFail = true;
                break;

            } else if (diffTime % 2 != 0 && (diffX + diffY) % 2 == 0) {
                isFail = true;
                break;

            }

            beforePoint = point;

        } int diffTime = point.getTime() - beforePoint.getTime(); diffTime point.getTime() - beforePoint.getTime() point.getTime() point.getTime point beforePoint.getTime() beforePoint.getTime beforePoint int diffX = point.getX() - beforePoint.getX(); diffX point.getX() - beforePoint.getX() point.getX() point.getX point beforePoint.getX() beforePoint.getX beforePoint int diffY = point.getY() - beforePoint.getY(); diffY point.getY() - beforePoint.getY() point.getY() point.getY point beforePoint.getY() beforePoint.getY beforePoint if (diffX + diffY > diffTime) {
                isFail = true;
                break;
            } diffX + diffY > diffTime diffX + diffY diffX diffY diffTime {
                isFail = true;
                break;
            } isFail = true isFail true break; if (diffTime % 2 == 0 && (diffX + diffY) % 2 != 0) {
                isFail = true;
                break;

            } else if (diffTime % 2 != 0 && (diffX + diffY) % 2 == 0) {
                isFail = true;
                break;

            } diffTime % 2 == 0 && (diffX + diffY) % 2 != 0 diffTime % 2 == 0 diffTime % 2 diffTime 2 0 (diffX + diffY) % 2 != 0 (diffX + diffY) % 2 (diffX + diffY) diffX diffY 2 0 {
                isFail = true;
                break;

            } isFail = true isFail true break; if (diffTime % 2 != 0 && (diffX + diffY) % 2 == 0) {
                isFail = true;
                break;

            } diffTime % 2 != 0 && (diffX + diffY) % 2 == 0 diffTime % 2 != 0 diffTime % 2 diffTime 2 0 (diffX + diffY) % 2 == 0 (diffX + diffY) % 2 (diffX + diffY) diffX diffY 2 0 {
                isFail = true;
                break;

            } isFail = true isFail true break; beforePoint = point beforePoint point if (isFail) {
            System.out.println("No");

        } else {
            System.out.println("Yes");

        } isFail {
            System.out.println("No");

        } System.out.println("No") System.out.println System.out System System.out "No" {
            System.out.println("Yes");

        } System.out.println("Yes") System.out.println System.out System System.out "Yes" String args[] args public static class Point {
        private int time;
        private int x;
        private int y;

        public int getTime() {
            return time;
        }

        public int getX() {
            return x;
        }

        public int getY() {
            return y;
        }

        public Point(int time, int x, int y) {
            this.time = time;
            this.x = x;
            this.y = y;
        }
    } Point private int time; time private int x; x private int y; y public int getTime() {
            return time;
        } getTime {
            return time;
        } return time; time public int getX() {
            return x;
        } getX {
            return x;
        } return x; x public int getY() {
            return y;
        } getY {
            return y;
        } return y; y public Point(int time, int x, int y) {
            this.time = time;
            this.x = x;
            this.y = y;
        } Point {
            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
import java.util.*;
import java.util.stream.Collectors;

class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
      
        int n = sc.nextInt();
        ArrayList<Point> points = new ArrayList<>();
        for(int i = 0; i < n; i++) {
            points.add(new Point(sc.nextInt(), sc.nextInt(), sc.nextInt()));
        }
      
        Point beforePoint = new Point(0, 0, 0);
        boolean isFail = false;
        for (Point point : points) {
            int diffTime = point.getTime() - beforePoint.getTime();
            int diffX = point.getX() - beforePoint.getX();
            int diffY = point.getY() - beforePoint.getY();

            if (diffX + diffY > diffTime) {
                isFail = true;
                break;
            }

            if (diffTime % 2 == 0 && (diffX + diffY) % 2 != 0) {
                isFail = true;
                break;

            } else if (diffTime % 2 != 0 && (diffX + diffY) % 2 == 0) {
                isFail = true;
                break;

            }

            beforePoint = point;

        }
        if (isFail) {
            System.out.println("No");

        } else {
            System.out.println("Yes");

        }
    }
    public static class Point {
        private int time;
        private int x;
        private int y;

        public int getTime() {
            return time;
        }

        public int getX() {
            return x;
        }

        public int getY() {
            return y;
        }

        public Point(int time, int x, int y) {
            this.time = time;
            this.x = x;
            this.y = y;
        }
    }

}