import java.util.Scanner;

public class Main {

    private static class Position {
        long x = 0;
        long y = 0;
    }

    private static boolean canTravel(long[] t, long[] x, long[] y) {
        Position pos = new Position();
        for (int i = 0; i < t.length; i++) {
            long dist;
            long dt;
            if (i == 0) {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } else {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            }
            if (dist > dt || dist % 2 != dt % 2) {
                return false;
            }
            pos.x = x[i];
            pos.y = y[i];
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long[] t = new long[n];
        long[] x = new long[n];
        long[] y = new long[n];

        for (int i = 0; i < n; i++) {
            t[i] = sc.nextInt();
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        }
        if (canTravel(t, x, y)) {
            System.out.println("Yes");
            return;
        }
        System.out.println("No");
    }

} import java.util.Scanner; Scanner java.util public class Main {

    private static class Position {
        long x = 0;
        long y = 0;
    }

    private static boolean canTravel(long[] t, long[] x, long[] y) {
        Position pos = new Position();
        for (int i = 0; i < t.length; i++) {
            long dist;
            long dt;
            if (i == 0) {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } else {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            }
            if (dist > dt || dist % 2 != dt % 2) {
                return false;
            }
            pos.x = x[i];
            pos.y = y[i];
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long[] t = new long[n];
        long[] x = new long[n];
        long[] y = new long[n];

        for (int i = 0; i < n; i++) {
            t[i] = sc.nextInt();
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        }
        if (canTravel(t, x, y)) {
            System.out.println("Yes");
            return;
        }
        System.out.println("No");
    }

} Main private static boolean canTravel(long[] t, long[] x, long[] y) {
        Position pos = new Position();
        for (int i = 0; i < t.length; i++) {
            long dist;
            long dt;
            if (i == 0) {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } else {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            }
            if (dist > dt || dist % 2 != dt % 2) {
                return false;
            }
            pos.x = x[i];
            pos.y = y[i];
        }
        return true;
    } canTravel {
        Position pos = new Position();
        for (int i = 0; i < t.length; i++) {
            long dist;
            long dt;
            if (i == 0) {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } else {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            }
            if (dist > dt || dist % 2 != dt % 2) {
                return false;
            }
            pos.x = x[i];
            pos.y = y[i];
        }
        return true;
    } Position pos = new Position(); pos new Position() for (int i = 0; i < t.length; i++) {
            long dist;
            long dt;
            if (i == 0) {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } else {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            }
            if (dist > dt || dist % 2 != dt % 2) {
                return false;
            }
            pos.x = x[i];
            pos.y = y[i];
        } int i = 0; int i = 0; i 0 i < t.length i t.length t t.length i++ i++ i {
            long dist;
            long dt;
            if (i == 0) {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } else {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            }
            if (dist > dt || dist % 2 != dt % 2) {
                return false;
            }
            pos.x = x[i];
            pos.y = y[i];
        } {
            long dist;
            long dt;
            if (i == 0) {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } else {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            }
            if (dist > dt || dist % 2 != dt % 2) {
                return false;
            }
            pos.x = x[i];
            pos.y = y[i];
        } long dist; dist long dt; dt if (i == 0) {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } else {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            } i == 0 i 0 {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } dist = Math.abs(x[i]) + Math.abs(y[i]) dist Math.abs(x[i]) + Math.abs(y[i]) Math.abs(x[i]) Math.abs Math x[i] x i Math.abs(y[i]) Math.abs Math y[i] y i dt = t[i] dt t[i] t i {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            } dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]) dist Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]) Math.abs(x[i] - x[i - 1]) Math.abs Math x[i] - x[i - 1] x[i] x i x[i - 1] x i - 1 i 1 Math.abs(y[i] - y[i - 1]) Math.abs Math y[i] - y[i - 1] y[i] y i y[i - 1] y i - 1 i 1 dt = t[i] - t[i - 1] dt t[i] - t[i - 1] t[i] t i t[i - 1] t i - 1 i 1 if (dist > dt || dist % 2 != dt % 2) {
                return false;
            } dist > dt || dist % 2 != dt % 2 dist > dt dist dt dist % 2 != dt % 2 dist % 2 dist 2 dt % 2 dt 2 {
                return false;
            } return false; false pos.x = x[i] pos.x pos pos.x x[i] x i pos.y = y[i] pos.y pos pos.y y[i] y i return true; true long[] t t long[] x x long[] y y public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long[] t = new long[n];
        long[] x = new long[n];
        long[] y = new long[n];

        for (int i = 0; i < n; i++) {
            t[i] = sc.nextInt();
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        }
        if (canTravel(t, x, y)) {
            System.out.println("Yes");
            return;
        }
        System.out.println("No");
    } main {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long[] t = new long[n];
        long[] x = new long[n];
        long[] y = new long[n];

        for (int i = 0; i < n; i++) {
            t[i] = sc.nextInt();
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        }
        if (canTravel(t, x, y)) {
            System.out.println("Yes");
            return;
        }
        System.out.println("No");
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc long[] t = new long[n]; t new long[n] n long[] x = new long[n]; x new long[n] n long[] y = new long[n]; y new long[n] n for (int i = 0; i < n; i++) {
            t[i] = sc.nextInt();
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            t[i] = sc.nextInt();
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        } {
            t[i] = sc.nextInt();
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        } t[i] = sc.nextInt() t[i] t i sc.nextInt() sc.nextInt sc x[i] = sc.nextInt() x[i] x i sc.nextInt() sc.nextInt sc y[i] = sc.nextInt() y[i] y i sc.nextInt() sc.nextInt sc if (canTravel(t, x, y)) {
            System.out.println("Yes");
            return;
        } canTravel(t, x, y) canTravel t x y {
            System.out.println("Yes");
            return;
        } System.out.println("Yes") System.out.println System.out System System.out "Yes" return; System.out.println("No") System.out.println System.out System System.out "No" String[] args args private static class Position {
        long x = 0;
        long y = 0;
    } Position long x = 0; x 0 long y = 0; y 0 public class Main {

    private static class Position {
        long x = 0;
        long y = 0;
    }

    private static boolean canTravel(long[] t, long[] x, long[] y) {
        Position pos = new Position();
        for (int i = 0; i < t.length; i++) {
            long dist;
            long dt;
            if (i == 0) {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } else {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            }
            if (dist > dt || dist % 2 != dt % 2) {
                return false;
            }
            pos.x = x[i];
            pos.y = y[i];
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long[] t = new long[n];
        long[] x = new long[n];
        long[] y = new long[n];

        for (int i = 0; i < n; i++) {
            t[i] = sc.nextInt();
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        }
        if (canTravel(t, x, y)) {
            System.out.println("Yes");
            return;
        }
        System.out.println("No");
    }

} public class Main {

    private static class Position {
        long x = 0;
        long y = 0;
    }

    private static boolean canTravel(long[] t, long[] x, long[] y) {
        Position pos = new Position();
        for (int i = 0; i < t.length; i++) {
            long dist;
            long dt;
            if (i == 0) {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } else {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            }
            if (dist > dt || dist % 2 != dt % 2) {
                return false;
            }
            pos.x = x[i];
            pos.y = y[i];
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long[] t = new long[n];
        long[] x = new long[n];
        long[] y = new long[n];

        for (int i = 0; i < n; i++) {
            t[i] = sc.nextInt();
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        }
        if (canTravel(t, x, y)) {
            System.out.println("Yes");
            return;
        }
        System.out.println("No");
    }

} Main
import java.util.Scanner;

public class Main {

    private static class Position {
        long x = 0;
        long y = 0;
    }

    private static boolean canTravel(long[] t, long[] x, long[] y) {
        Position pos = new Position();
        for (int i = 0; i < t.length; i++) {
            long dist;
            long dt;
            if (i == 0) {
                dist = Math.abs(x[i]) + Math.abs(y[i]);
                dt = t[i];
            } else {
                dist = Math.abs(x[i] - x[i - 1]) + Math.abs(y[i] - y[i - 1]);
                dt = t[i] - t[i - 1];
            }
            if (dist > dt || dist % 2 != dt % 2) {
                return false;
            }
            pos.x = x[i];
            pos.y = y[i];
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long[] t = new long[n];
        long[] x = new long[n];
        long[] y = new long[n];

        for (int i = 0; i < n; i++) {
            t[i] = sc.nextInt();
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        }
        if (canTravel(t, x, y)) {
            System.out.println("Yes");
            return;
        }
        System.out.println("No");
    }

}
