import java.util.*;

class Main {
    public static void main(String[] args) {
        new Solver().run();
    }
}

class Point {
    int x;
    int y;

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

    public int distanceTo(Point other) {
        return Math.abs(x - other.x) + Math.abs(y - other.y);
    }

    public String toString() {
        return String.format("(%d, %d)", x, y);
    }
}

class Solver {

    private boolean reachable(int difft, int d) {
        int diff = difft - d;
        if (diff < 0)  return false;
        if ((diff % 2) == 0) return true;
        return false;
    }

    public void run() {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] t = new int[N];
        Point[] p = new Point[N];


        int sum = 0;
        for (int i = 0; i < N; i++) {
            t[i] = sc.nextInt();
            p[i] = new Point(sc.nextInt(), sc.nextInt());
        }

        int curt = 0;
        Point curp = new Point(0, 0);
        for (int i = 0; i < N; i++) {
            int nxtt = t[i];
            Point dst = p[i];
            int d = curp.distanceTo(dst);
            if (!reachable(nxtt - curt, d)) {
                System.out.println("No");
                return;
            }
            curt = nxtt;
            curp = dst;
        }

        System.out.println("Yes");
        return;
    }

} import java.util.*; util.* java class Main {
    public static void main(String[] args) {
        new Solver().run();
    }
} Main public static void main(String[] args) {
        new Solver().run();
    } main {
        new Solver().run();
    } new Solver().run() new Solver().run new Solver() String[] args args class Point {
    int x;
    int y;

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

    public int distanceTo(Point other) {
        return Math.abs(x - other.x) + Math.abs(y - other.y);
    }

    public String toString() {
        return String.format("(%d, %d)", x, y);
    }
} Point int x; x int y; y public Point(int x, int y) {
        this.x = x;
        this.y = y;
    } Point {
        this.x = x;
        this.y = y;
    } this.x = x this.x this this.x x this.y = y this.y this this.y y int x x int y y public int distanceTo(Point other) {
        return Math.abs(x - other.x) + Math.abs(y - other.y);
    } distanceTo {
        return Math.abs(x - other.x) + Math.abs(y - other.y);
    } return Math.abs(x - other.x) + Math.abs(y - other.y); Math.abs(x - other.x) + Math.abs(y - other.y) Math.abs(x - other.x) Math.abs Math x - other.x x other.x other other.x Math.abs(y - other.y) Math.abs Math y - other.y y other.y other other.y Point other other public String toString() {
        return String.format("(%d, %d)", x, y);
    } toString {
        return String.format("(%d, %d)", x, y);
    } return String.format("(%d, %d)", x, y); String.format("(%d, %d)", x, y) String.format String "(%d, %d)" x y class Solver {

    private boolean reachable(int difft, int d) {
        int diff = difft - d;
        if (diff < 0)  return false;
        if ((diff % 2) == 0) return true;
        return false;
    }

    public void run() {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] t = new int[N];
        Point[] p = new Point[N];


        int sum = 0;
        for (int i = 0; i < N; i++) {
            t[i] = sc.nextInt();
            p[i] = new Point(sc.nextInt(), sc.nextInt());
        }

        int curt = 0;
        Point curp = new Point(0, 0);
        for (int i = 0; i < N; i++) {
            int nxtt = t[i];
            Point dst = p[i];
            int d = curp.distanceTo(dst);
            if (!reachable(nxtt - curt, d)) {
                System.out.println("No");
                return;
            }
            curt = nxtt;
            curp = dst;
        }

        System.out.println("Yes");
        return;
    }

} Solver private boolean reachable(int difft, int d) {
        int diff = difft - d;
        if (diff < 0)  return false;
        if ((diff % 2) == 0) return true;
        return false;
    } reachable {
        int diff = difft - d;
        if (diff < 0)  return false;
        if ((diff % 2) == 0) return true;
        return false;
    } int diff = difft - d; diff difft - d difft d if (diff < 0)  return false; diff < 0 diff 0 return false; false if ((diff % 2) == 0) return true; (diff % 2) == 0 (diff % 2) diff 2 0 return true; true return false; false int difft difft int d d public void run() {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] t = new int[N];
        Point[] p = new Point[N];


        int sum = 0;
        for (int i = 0; i < N; i++) {
            t[i] = sc.nextInt();
            p[i] = new Point(sc.nextInt(), sc.nextInt());
        }

        int curt = 0;
        Point curp = new Point(0, 0);
        for (int i = 0; i < N; i++) {
            int nxtt = t[i];
            Point dst = p[i];
            int d = curp.distanceTo(dst);
            if (!reachable(nxtt - curt, d)) {
                System.out.println("No");
                return;
            }
            curt = nxtt;
            curp = dst;
        }

        System.out.println("Yes");
        return;
    } run {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] t = new int[N];
        Point[] p = new Point[N];


        int sum = 0;
        for (int i = 0; i < N; i++) {
            t[i] = sc.nextInt();
            p[i] = new Point(sc.nextInt(), sc.nextInt());
        }

        int curt = 0;
        Point curp = new Point(0, 0);
        for (int i = 0; i < N; i++) {
            int nxtt = t[i];
            Point dst = p[i];
            int d = curp.distanceTo(dst);
            if (!reachable(nxtt - curt, d)) {
                System.out.println("No");
                return;
            }
            curt = nxtt;
            curp = dst;
        }

        System.out.println("Yes");
        return;
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc int[] t = new int[N]; t new int[N] N Point[] p = new Point[N]; p new Point[N] N int sum = 0; sum 0 for (int i = 0; i < N; i++) {
            t[i] = sc.nextInt();
            p[i] = new Point(sc.nextInt(), sc.nextInt());
        } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
            t[i] = sc.nextInt();
            p[i] = new Point(sc.nextInt(), sc.nextInt());
        } {
            t[i] = sc.nextInt();
            p[i] = new Point(sc.nextInt(), sc.nextInt());
        } t[i] = sc.nextInt() t[i] t i sc.nextInt() sc.nextInt sc p[i] = new Point(sc.nextInt(), sc.nextInt()) p[i] p i new Point(sc.nextInt(), sc.nextInt()) int curt = 0; curt 0 Point curp = new Point(0, 0); curp new Point(0, 0) for (int i = 0; i < N; i++) {
            int nxtt = t[i];
            Point dst = p[i];
            int d = curp.distanceTo(dst);
            if (!reachable(nxtt - curt, d)) {
                System.out.println("No");
                return;
            }
            curt = nxtt;
            curp = dst;
        } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
            int nxtt = t[i];
            Point dst = p[i];
            int d = curp.distanceTo(dst);
            if (!reachable(nxtt - curt, d)) {
                System.out.println("No");
                return;
            }
            curt = nxtt;
            curp = dst;
        } {
            int nxtt = t[i];
            Point dst = p[i];
            int d = curp.distanceTo(dst);
            if (!reachable(nxtt - curt, d)) {
                System.out.println("No");
                return;
            }
            curt = nxtt;
            curp = dst;
        } int nxtt = t[i]; nxtt t[i] t i Point dst = p[i]; dst p[i] p i int d = curp.distanceTo(dst); d curp.distanceTo(dst) curp.distanceTo curp dst if (!reachable(nxtt - curt, d)) {
                System.out.println("No");
                return;
            } !reachable(nxtt - curt, d) reachable(nxtt - curt, d) reachable nxtt - curt nxtt curt d {
                System.out.println("No");
                return;
            } System.out.println("No") System.out.println System.out System System.out "No" return; curt = nxtt curt nxtt curp = dst curp dst System.out.println("Yes") System.out.println System.out System System.out "Yes" return;
import java.util.*;

class Main {
    public static void main(String[] args) {
        new Solver().run();
    }
}

class Point {
    int x;
    int y;

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

    public int distanceTo(Point other) {
        return Math.abs(x - other.x) + Math.abs(y - other.y);
    }

    public String toString() {
        return String.format("(%d, %d)", x, y);
    }
}

class Solver {

    private boolean reachable(int difft, int d) {
        int diff = difft - d;
        if (diff < 0)  return false;
        if ((diff % 2) == 0) return true;
        return false;
    }

    public void run() {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] t = new int[N];
        Point[] p = new Point[N];


        int sum = 0;
        for (int i = 0; i < N; i++) {
            t[i] = sc.nextInt();
            p[i] = new Point(sc.nextInt(), sc.nextInt());
        }

        int curt = 0;
        Point curp = new Point(0, 0);
        for (int i = 0; i < N; i++) {
            int nxtt = t[i];
            Point dst = p[i];
            int d = curp.distanceTo(dst);
            if (!reachable(nxtt - curt, d)) {
                System.out.println("No");
                return;
            }
            curt = nxtt;
            curp = dst;
        }

        System.out.println("Yes");
        return;
    }

}