import java.util.*;

import static java.lang.System.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        int[] t = new int[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.nextLong();
            y[i] = sc.nextLong();
        }

        boolean canTravels = true;
        int startT = 0;
        long startX = 0;
        long startY = 0;
        for (int i = 0; i < N; i++) {
            if (!canTravel(startT, startX, startY, t[i], x[i], y[i])) {
                canTravels = false;
                break;
            }
            startT = t[i];
            startX = x[i];
            startY = y[i];
        }

        if (canTravels) {
            out.println("Yes");
        } else {
            out.println("No");
        }
    }

    static boolean canTravel(int t, long x, long y, int t1, long x1, long y1) {
        int diffT = t1 - t;
        long diffX = Math.abs(x1 - x);
        long diffY = Math.abs(y1 - y);

        return (diffT - diffX - diffY) >= 0 && (diffT - diffX - diffY) % 2 == 0;
    }
} import java.util.*; util.* java import static java.lang.System.*; import static java.lang.System.*; import static java.lang.System.*; public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        int[] t = new int[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.nextLong();
            y[i] = sc.nextLong();
        }

        boolean canTravels = true;
        int startT = 0;
        long startX = 0;
        long startY = 0;
        for (int i = 0; i < N; i++) {
            if (!canTravel(startT, startX, startY, t[i], x[i], y[i])) {
                canTravels = false;
                break;
            }
            startT = t[i];
            startX = x[i];
            startY = y[i];
        }

        if (canTravels) {
            out.println("Yes");
        } else {
            out.println("No");
        }
    }

    static boolean canTravel(int t, long x, long y, int t1, long x1, long y1) {
        int diffT = t1 - t;
        long diffX = Math.abs(x1 - x);
        long diffY = Math.abs(y1 - y);

        return (diffT - diffX - diffY) >= 0 && (diffT - diffX - diffY) % 2 == 0;
    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        int[] t = new int[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.nextLong();
            y[i] = sc.nextLong();
        }

        boolean canTravels = true;
        int startT = 0;
        long startX = 0;
        long startY = 0;
        for (int i = 0; i < N; i++) {
            if (!canTravel(startT, startX, startY, t[i], x[i], y[i])) {
                canTravels = false;
                break;
            }
            startT = t[i];
            startX = x[i];
            startY = y[i];
        }

        if (canTravels) {
            out.println("Yes");
        } else {
            out.println("No");
        }
    } main {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        int[] t = new int[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.nextLong();
            y[i] = sc.nextLong();
        }

        boolean canTravels = true;
        int startT = 0;
        long startX = 0;
        long startY = 0;
        for (int i = 0; i < N; i++) {
            if (!canTravel(startT, startX, startY, t[i], x[i], y[i])) {
                canTravels = false;
                break;
            }
            startT = t[i];
            startX = x[i];
            startY = y[i];
        }

        if (canTravels) {
            out.println("Yes");
        } else {
            out.println("No");
        }
    } 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 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.nextLong();
            y[i] = sc.nextLong();
        } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
            t[i] = sc.nextInt();
            x[i] = sc.nextLong();
            y[i] = sc.nextLong();
        } {
            t[i] = sc.nextInt();
            x[i] = sc.nextLong();
            y[i] = sc.nextLong();
        } t[i] = sc.nextInt() t[i] t i sc.nextInt() sc.nextInt sc x[i] = sc.nextLong() x[i] x i sc.nextLong() sc.nextLong sc y[i] = sc.nextLong() y[i] y i sc.nextLong() sc.nextLong sc boolean canTravels = true; canTravels true int startT = 0; startT 0 long startX = 0; startX 0 long startY = 0; startY 0 for (int i = 0; i < N; i++) {
            if (!canTravel(startT, startX, startY, t[i], x[i], y[i])) {
                canTravels = false;
                break;
            }
            startT = t[i];
            startX = x[i];
            startY = y[i];
        } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
            if (!canTravel(startT, startX, startY, t[i], x[i], y[i])) {
                canTravels = false;
                break;
            }
            startT = t[i];
            startX = x[i];
            startY = y[i];
        } {
            if (!canTravel(startT, startX, startY, t[i], x[i], y[i])) {
                canTravels = false;
                break;
            }
            startT = t[i];
            startX = x[i];
            startY = y[i];
        } if (!canTravel(startT, startX, startY, t[i], x[i], y[i])) {
                canTravels = false;
                break;
            } !canTravel(startT, startX, startY, t[i], x[i], y[i]) canTravel(startT, startX, startY, t[i], x[i], y[i]) canTravel startT startX startY t[i] t i x[i] x i y[i] y i {
                canTravels = false;
                break;
            } canTravels = false canTravels false break; startT = t[i] startT t[i] t i startX = x[i] startX x[i] x i startY = y[i] startY y[i] y i if (canTravels) {
            out.println("Yes");
        } else {
            out.println("No");
        } canTravels {
            out.println("Yes");
        } out.println("Yes") out.println out "Yes" {
            out.println("No");
        } out.println("No") out.println out "No" String[] args args static boolean canTravel(int t, long x, long y, int t1, long x1, long y1) {
        int diffT = t1 - t;
        long diffX = Math.abs(x1 - x);
        long diffY = Math.abs(y1 - y);

        return (diffT - diffX - diffY) >= 0 && (diffT - diffX - diffY) % 2 == 0;
    } canTravel {
        int diffT = t1 - t;
        long diffX = Math.abs(x1 - x);
        long diffY = Math.abs(y1 - y);

        return (diffT - diffX - diffY) >= 0 && (diffT - diffX - diffY) % 2 == 0;
    } int diffT = t1 - t; diffT t1 - t t1 t long diffX = Math.abs(x1 - x); diffX Math.abs(x1 - x) Math.abs Math x1 - x x1 x long diffY = Math.abs(y1 - y); diffY Math.abs(y1 - y) Math.abs Math y1 - y y1 y return (diffT - diffX - diffY) >= 0 && (diffT - diffX - diffY) % 2 == 0; (diffT - diffX - diffY) >= 0 && (diffT - diffX - diffY) % 2 == 0 (diffT - diffX - diffY) >= 0 (diffT - diffX - diffY) diffT - diffX - diffY diffT diffX diffY 0 (diffT - diffX - diffY) % 2 == 0 (diffT - diffX - diffY) % 2 (diffT - diffX - diffY) diffT - diffX - diffY diffT diffX diffY 2 0 int t t long x x long y y int t1 t1 long x1 x1 long y1 y1 public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        int[] t = new int[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.nextLong();
            y[i] = sc.nextLong();
        }

        boolean canTravels = true;
        int startT = 0;
        long startX = 0;
        long startY = 0;
        for (int i = 0; i < N; i++) {
            if (!canTravel(startT, startX, startY, t[i], x[i], y[i])) {
                canTravels = false;
                break;
            }
            startT = t[i];
            startX = x[i];
            startY = y[i];
        }

        if (canTravels) {
            out.println("Yes");
        } else {
            out.println("No");
        }
    }

    static boolean canTravel(int t, long x, long y, int t1, long x1, long y1) {
        int diffT = t1 - t;
        long diffX = Math.abs(x1 - x);
        long diffY = Math.abs(y1 - y);

        return (diffT - diffX - diffY) >= 0 && (diffT - diffX - diffY) % 2 == 0;
    }
} public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        int[] t = new int[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.nextLong();
            y[i] = sc.nextLong();
        }

        boolean canTravels = true;
        int startT = 0;
        long startX = 0;
        long startY = 0;
        for (int i = 0; i < N; i++) {
            if (!canTravel(startT, startX, startY, t[i], x[i], y[i])) {
                canTravels = false;
                break;
            }
            startT = t[i];
            startX = x[i];
            startY = y[i];
        }

        if (canTravels) {
            out.println("Yes");
        } else {
            out.println("No");
        }
    }

    static boolean canTravel(int t, long x, long y, int t1, long x1, long y1) {
        int diffT = t1 - t;
        long diffX = Math.abs(x1 - x);
        long diffY = Math.abs(y1 - y);

        return (diffT - diffX - diffY) >= 0 && (diffT - diffX - diffY) % 2 == 0;
    }
} Main
import java.util.*;

import static java.lang.System.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        int[] t = new int[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.nextLong();
            y[i] = sc.nextLong();
        }

        boolean canTravels = true;
        int startT = 0;
        long startX = 0;
        long startY = 0;
        for (int i = 0; i < N; i++) {
            if (!canTravel(startT, startX, startY, t[i], x[i], y[i])) {
                canTravels = false;
                break;
            }
            startT = t[i];
            startX = x[i];
            startY = y[i];
        }

        if (canTravels) {
            out.println("Yes");
        } else {
            out.println("No");
        }
    }

    static boolean canTravel(int t, long x, long y, int t1, long x1, long y1) {
        int diffT = t1 - t;
        long diffX = Math.abs(x1 - x);
        long diffY = Math.abs(y1 - y);

        return (diffT - diffX - diffY) >= 0 && (diffT - diffX - diffY) % 2 == 0;
    }
}