
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		//		new Main().solveA();
		//		new Main().solveB();
		new Main().solveC();
		// new Main().solveD();
	}

	private void solveA() {
		Scanner scanner = null;
		int numA = 0;
		int numB = 0;

		try {
			scanner = new Scanner(System.in);
			numA = scanner.nextInt();
			numB = scanner.nextInt();

			if (numA * numB % 2 == 0) {
				System.out.println("Even");
			} else {
				System.out.println("Odd");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveB() {
		Scanner scanner = null;
		String numA = "";
		String numB = "";

		try {
			scanner = new Scanner(System.in);
			numA = scanner.next();
			numB = scanner.next();

			double wkNum = Double.parseDouble(numA + numB);
			int wk = (int) Math.sqrt(wkNum);
			if (Math.pow(wk, 2) == wkNum) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveC() {
		Scanner scanner = null;
		int numN = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();
			int[] t = new int[numN];
			int[] x = new int[numN];
			int[] y = new int[numN];

			for (int i = 0; i < t.length; i++) {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			}

			int cT = 0;
			int cX = 0;
			int cY = 0;
			for (int i = 0; i < numN; i++) {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			}

			System.out.println("Yes");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveD() {
		Scanner scanner = null;
		int numN = 0;
		int numK = 0;
		int numS = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();

			System.out.println("");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}
} import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		//		new Main().solveA();
		//		new Main().solveB();
		new Main().solveC();
		// new Main().solveD();
	}

	private void solveA() {
		Scanner scanner = null;
		int numA = 0;
		int numB = 0;

		try {
			scanner = new Scanner(System.in);
			numA = scanner.nextInt();
			numB = scanner.nextInt();

			if (numA * numB % 2 == 0) {
				System.out.println("Even");
			} else {
				System.out.println("Odd");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveB() {
		Scanner scanner = null;
		String numA = "";
		String numB = "";

		try {
			scanner = new Scanner(System.in);
			numA = scanner.next();
			numB = scanner.next();

			double wkNum = Double.parseDouble(numA + numB);
			int wk = (int) Math.sqrt(wkNum);
			if (Math.pow(wk, 2) == wkNum) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveC() {
		Scanner scanner = null;
		int numN = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();
			int[] t = new int[numN];
			int[] x = new int[numN];
			int[] y = new int[numN];

			for (int i = 0; i < t.length; i++) {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			}

			int cT = 0;
			int cX = 0;
			int cY = 0;
			for (int i = 0; i < numN; i++) {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			}

			System.out.println("Yes");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveD() {
		Scanner scanner = null;
		int numN = 0;
		int numK = 0;
		int numS = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();

			System.out.println("");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}
} Main public static void main(String[] args) {
		//		new Main().solveA();
		//		new Main().solveB();
		new Main().solveC();
		// new Main().solveD();
	} main {
		//		new Main().solveA();
		//		new Main().solveB();
		new Main().solveC();
		// new Main().solveD();
	} new Main().solveC() new Main().solveC new Main() String[] args args private void solveA() {
		Scanner scanner = null;
		int numA = 0;
		int numB = 0;

		try {
			scanner = new Scanner(System.in);
			numA = scanner.nextInt();
			numB = scanner.nextInt();

			if (numA * numB % 2 == 0) {
				System.out.println("Even");
			} else {
				System.out.println("Odd");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	} solveA {
		Scanner scanner = null;
		int numA = 0;
		int numB = 0;

		try {
			scanner = new Scanner(System.in);
			numA = scanner.nextInt();
			numB = scanner.nextInt();

			if (numA * numB % 2 == 0) {
				System.out.println("Even");
			} else {
				System.out.println("Odd");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	} Scanner scanner = null; scanner null int numA = 0; numA 0 int numB = 0; numB 0 try {
			scanner = new Scanner(System.in);
			numA = scanner.nextInt();
			numB = scanner.nextInt();

			if (numA * numB % 2 == 0) {
				System.out.println("Even");
			} else {
				System.out.println("Odd");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		} {
			if (scanner != null) {
				scanner.close();
			}
		} if (scanner != null) {
				scanner.close();
			} scanner != null scanner null {
				scanner.close();
			} scanner.close() scanner.close scanner {
			scanner = new Scanner(System.in);
			numA = scanner.nextInt();
			numB = scanner.nextInt();

			if (numA * numB % 2 == 0) {
				System.out.println("Even");
			} else {
				System.out.println("Odd");
			}

		} scanner = new Scanner(System.in) scanner new Scanner(System.in) numA = scanner.nextInt() numA scanner.nextInt() scanner.nextInt scanner numB = scanner.nextInt() numB scanner.nextInt() scanner.nextInt scanner if (numA * numB % 2 == 0) {
				System.out.println("Even");
			} else {
				System.out.println("Odd");
			} numA * numB % 2 == 0 numA * numB % 2 numA * numB numA numB 2 0 {
				System.out.println("Even");
			} System.out.println("Even") System.out.println System.out System System.out "Even" {
				System.out.println("Odd");
			} System.out.println("Odd") System.out.println System.out System System.out "Odd" private void solveB() {
		Scanner scanner = null;
		String numA = "";
		String numB = "";

		try {
			scanner = new Scanner(System.in);
			numA = scanner.next();
			numB = scanner.next();

			double wkNum = Double.parseDouble(numA + numB);
			int wk = (int) Math.sqrt(wkNum);
			if (Math.pow(wk, 2) == wkNum) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	} solveB {
		Scanner scanner = null;
		String numA = "";
		String numB = "";

		try {
			scanner = new Scanner(System.in);
			numA = scanner.next();
			numB = scanner.next();

			double wkNum = Double.parseDouble(numA + numB);
			int wk = (int) Math.sqrt(wkNum);
			if (Math.pow(wk, 2) == wkNum) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	} Scanner scanner = null; scanner null String numA = ""; numA "" String numB = ""; numB "" try {
			scanner = new Scanner(System.in);
			numA = scanner.next();
			numB = scanner.next();

			double wkNum = Double.parseDouble(numA + numB);
			int wk = (int) Math.sqrt(wkNum);
			if (Math.pow(wk, 2) == wkNum) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		} {
			if (scanner != null) {
				scanner.close();
			}
		} if (scanner != null) {
				scanner.close();
			} scanner != null scanner null {
				scanner.close();
			} scanner.close() scanner.close scanner {
			scanner = new Scanner(System.in);
			numA = scanner.next();
			numB = scanner.next();

			double wkNum = Double.parseDouble(numA + numB);
			int wk = (int) Math.sqrt(wkNum);
			if (Math.pow(wk, 2) == wkNum) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}

		} scanner = new Scanner(System.in) scanner new Scanner(System.in) numA = scanner.next() numA scanner.next() scanner.next scanner numB = scanner.next() numB scanner.next() scanner.next scanner double wkNum = Double.parseDouble(numA + numB); wkNum Double.parseDouble(numA + numB) Double.parseDouble Double numA + numB numA numB int wk = (int) Math.sqrt(wkNum); wk (int) Math.sqrt(wkNum) Math.sqrt Math wkNum if (Math.pow(wk, 2) == wkNum) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			} Math.pow(wk, 2) == wkNum Math.pow(wk, 2) Math.pow Math wk 2 wkNum {
				System.out.println("Yes");
			} System.out.println("Yes") System.out.println System.out System System.out "Yes" {
				System.out.println("No");
			} System.out.println("No") System.out.println System.out System System.out "No" private void solveC() {
		Scanner scanner = null;
		int numN = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();
			int[] t = new int[numN];
			int[] x = new int[numN];
			int[] y = new int[numN];

			for (int i = 0; i < t.length; i++) {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			}

			int cT = 0;
			int cX = 0;
			int cY = 0;
			for (int i = 0; i < numN; i++) {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			}

			System.out.println("Yes");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	} solveC {
		Scanner scanner = null;
		int numN = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();
			int[] t = new int[numN];
			int[] x = new int[numN];
			int[] y = new int[numN];

			for (int i = 0; i < t.length; i++) {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			}

			int cT = 0;
			int cX = 0;
			int cY = 0;
			for (int i = 0; i < numN; i++) {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			}

			System.out.println("Yes");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	} Scanner scanner = null; scanner null int numN = 0; numN 0 try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();
			int[] t = new int[numN];
			int[] x = new int[numN];
			int[] y = new int[numN];

			for (int i = 0; i < t.length; i++) {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			}

			int cT = 0;
			int cX = 0;
			int cY = 0;
			for (int i = 0; i < numN; i++) {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			}

			System.out.println("Yes");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		} {
			if (scanner != null) {
				scanner.close();
			}
		} if (scanner != null) {
				scanner.close();
			} scanner != null scanner null {
				scanner.close();
			} scanner.close() scanner.close scanner {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();
			int[] t = new int[numN];
			int[] x = new int[numN];
			int[] y = new int[numN];

			for (int i = 0; i < t.length; i++) {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			}

			int cT = 0;
			int cX = 0;
			int cY = 0;
			for (int i = 0; i < numN; i++) {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			}

			System.out.println("Yes");

		} scanner = new Scanner(System.in) scanner new Scanner(System.in) numN = scanner.nextInt() numN scanner.nextInt() scanner.nextInt scanner int[] t = new int[numN]; t new int[numN] numN int[] x = new int[numN]; x new int[numN] numN int[] y = new int[numN]; y new int[numN] numN for (int i = 0; i < t.length; i++) {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			} int i = 0; int i = 0; i 0 i < t.length i t.length t t.length i++ i++ i {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			} {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			} t[i] = scanner.nextInt() t[i] t i scanner.nextInt() scanner.nextInt scanner x[i] = scanner.nextInt() x[i] x i scanner.nextInt() scanner.nextInt scanner y[i] = scanner.nextInt() y[i] y i scanner.nextInt() scanner.nextInt scanner int cT = 0; cT 0 int cX = 0; cX 0 int cY = 0; cY 0 for (int i = 0; i < numN; i++) {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			} int i = 0; int i = 0; i 0 i < numN i numN i++ i++ i {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			} {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			} boolean wkB = (t[i] % 2 == 0); wkB (t[i] % 2 == 0) t[i] % 2 t[i] t i 2 0 boolean wkB2 = ((x[i] + y[i]) % 2 == 0); wkB2 ((x[i] + y[i]) % 2 == 0) (x[i] + y[i]) % 2 (x[i] + y[i]) x[i] x i y[i] y i 2 0 if (wkB != wkB2) {
					System.out.println("No");
					return;
				} wkB != wkB2 wkB wkB2 {
					System.out.println("No");
					return;
				} System.out.println("No") System.out.println System.out System System.out "No" return; if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				} t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i])) t[i] - cT t[i] t i cT Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i])) Math.abs Math Math.abs(cX + cY) - Math.abs(x[i] + y[i]) Math.abs(cX + cY) Math.abs Math cX + cY cX cY Math.abs(x[i] + y[i]) Math.abs Math x[i] + y[i] x[i] x i y[i] y i {
					System.out.println("No");
					return;
				} System.out.println("No") System.out.println System.out System System.out "No" return; {
				} cT = t[i] cT t[i] t i cX = x[i] cX x[i] x i cY = y[i] cY y[i] y i System.out.println("Yes") System.out.println System.out System System.out "Yes" private void solveD() {
		Scanner scanner = null;
		int numN = 0;
		int numK = 0;
		int numS = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();

			System.out.println("");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	} solveD {
		Scanner scanner = null;
		int numN = 0;
		int numK = 0;
		int numS = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();

			System.out.println("");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	} Scanner scanner = null; scanner null int numN = 0; numN 0 int numK = 0; numK 0 int numS = 0; numS 0 try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();

			System.out.println("");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		} {
			if (scanner != null) {
				scanner.close();
			}
		} if (scanner != null) {
				scanner.close();
			} scanner != null scanner null {
				scanner.close();
			} scanner.close() scanner.close scanner {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();

			System.out.println("");

		} scanner = new Scanner(System.in) scanner new Scanner(System.in) numN = scanner.nextInt() numN scanner.nextInt() scanner.nextInt scanner System.out.println("") System.out.println System.out System System.out "" public class Main {

	public static void main(String[] args) {
		//		new Main().solveA();
		//		new Main().solveB();
		new Main().solveC();
		// new Main().solveD();
	}

	private void solveA() {
		Scanner scanner = null;
		int numA = 0;
		int numB = 0;

		try {
			scanner = new Scanner(System.in);
			numA = scanner.nextInt();
			numB = scanner.nextInt();

			if (numA * numB % 2 == 0) {
				System.out.println("Even");
			} else {
				System.out.println("Odd");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveB() {
		Scanner scanner = null;
		String numA = "";
		String numB = "";

		try {
			scanner = new Scanner(System.in);
			numA = scanner.next();
			numB = scanner.next();

			double wkNum = Double.parseDouble(numA + numB);
			int wk = (int) Math.sqrt(wkNum);
			if (Math.pow(wk, 2) == wkNum) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveC() {
		Scanner scanner = null;
		int numN = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();
			int[] t = new int[numN];
			int[] x = new int[numN];
			int[] y = new int[numN];

			for (int i = 0; i < t.length; i++) {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			}

			int cT = 0;
			int cX = 0;
			int cY = 0;
			for (int i = 0; i < numN; i++) {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			}

			System.out.println("Yes");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveD() {
		Scanner scanner = null;
		int numN = 0;
		int numK = 0;
		int numS = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();

			System.out.println("");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}
} public class Main {

	public static void main(String[] args) {
		//		new Main().solveA();
		//		new Main().solveB();
		new Main().solveC();
		// new Main().solveD();
	}

	private void solveA() {
		Scanner scanner = null;
		int numA = 0;
		int numB = 0;

		try {
			scanner = new Scanner(System.in);
			numA = scanner.nextInt();
			numB = scanner.nextInt();

			if (numA * numB % 2 == 0) {
				System.out.println("Even");
			} else {
				System.out.println("Odd");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveB() {
		Scanner scanner = null;
		String numA = "";
		String numB = "";

		try {
			scanner = new Scanner(System.in);
			numA = scanner.next();
			numB = scanner.next();

			double wkNum = Double.parseDouble(numA + numB);
			int wk = (int) Math.sqrt(wkNum);
			if (Math.pow(wk, 2) == wkNum) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveC() {
		Scanner scanner = null;
		int numN = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();
			int[] t = new int[numN];
			int[] x = new int[numN];
			int[] y = new int[numN];

			for (int i = 0; i < t.length; i++) {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			}

			int cT = 0;
			int cX = 0;
			int cY = 0;
			for (int i = 0; i < numN; i++) {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			}

			System.out.println("Yes");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveD() {
		Scanner scanner = null;
		int numN = 0;
		int numK = 0;
		int numS = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();

			System.out.println("");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}
} Main

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		//		new Main().solveA();
		//		new Main().solveB();
		new Main().solveC();
		// new Main().solveD();
	}

	private void solveA() {
		Scanner scanner = null;
		int numA = 0;
		int numB = 0;

		try {
			scanner = new Scanner(System.in);
			numA = scanner.nextInt();
			numB = scanner.nextInt();

			if (numA * numB % 2 == 0) {
				System.out.println("Even");
			} else {
				System.out.println("Odd");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveB() {
		Scanner scanner = null;
		String numA = "";
		String numB = "";

		try {
			scanner = new Scanner(System.in);
			numA = scanner.next();
			numB = scanner.next();

			double wkNum = Double.parseDouble(numA + numB);
			int wk = (int) Math.sqrt(wkNum);
			if (Math.pow(wk, 2) == wkNum) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveC() {
		Scanner scanner = null;
		int numN = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();
			int[] t = new int[numN];
			int[] x = new int[numN];
			int[] y = new int[numN];

			for (int i = 0; i < t.length; i++) {
				t[i] = scanner.nextInt();
				x[i] = scanner.nextInt();
				y[i] = scanner.nextInt();
			}

			int cT = 0;
			int cX = 0;
			int cY = 0;
			for (int i = 0; i < numN; i++) {

				boolean wkB = (t[i] % 2 == 0);
				boolean wkB2 = ((x[i] + y[i]) % 2 == 0);

				if (wkB != wkB2) {
					System.out.println("No");
					return;
				}

				if (t[i] - cT < Math.abs(Math.abs(cX + cY) - Math.abs(x[i] + y[i]))) {
					System.out.println("No");
					return;
				} else {
				}
				cT = t[i];
				cX = x[i];
				cY = y[i];
			}

			System.out.println("Yes");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}

	private void solveD() {
		Scanner scanner = null;
		int numN = 0;
		int numK = 0;
		int numS = 0;

		try {
			scanner = new Scanner(System.in);
			numN = scanner.nextInt();

			System.out.println("");

		} finally {
			if (scanner != null) {
				scanner.close();
			}
		}
	}
}