import java.util.*;
import java.math.RoundingMode;
import java.math.BigDecimal;
 
 
 
public class Main{
	public static void main (String[] args){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] t = new int[n];
		int[] x = new int[n];
		int[] y = new int[n];
		for(int i = 0; i < n; i++) {
			t[i] = sc.nextInt();
			x[i] = sc.nextInt();
			y[i] = sc.nextInt();
		}
		boolean able = true;
		if((x[0]+y[0])<=t[0]&&(x[0]+y[0])%2==t[0]%2) {
			for(int i = 1; i < n; i++) {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			}
			System.out.println(able ?  "Yes":"No");
		}
		else System.out.println("No");
	}
} import java.util.*; util.* java import java.math.RoundingMode; RoundingMode java.math import java.math.BigDecimal; BigDecimal java.math public class Main{
	public static void main (String[] args){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] t = new int[n];
		int[] x = new int[n];
		int[] y = new int[n];
		for(int i = 0; i < n; i++) {
			t[i] = sc.nextInt();
			x[i] = sc.nextInt();
			y[i] = sc.nextInt();
		}
		boolean able = true;
		if((x[0]+y[0])<=t[0]&&(x[0]+y[0])%2==t[0]%2) {
			for(int i = 1; i < n; i++) {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			}
			System.out.println(able ?  "Yes":"No");
		}
		else System.out.println("No");
	}
} Main public static void main (String[] args){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] t = new int[n];
		int[] x = new int[n];
		int[] y = new int[n];
		for(int i = 0; i < n; i++) {
			t[i] = sc.nextInt();
			x[i] = sc.nextInt();
			y[i] = sc.nextInt();
		}
		boolean able = true;
		if((x[0]+y[0])<=t[0]&&(x[0]+y[0])%2==t[0]%2) {
			for(int i = 1; i < n; i++) {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			}
			System.out.println(able ?  "Yes":"No");
		}
		else System.out.println("No");
	} main {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] t = new int[n];
		int[] x = new int[n];
		int[] y = new int[n];
		for(int i = 0; i < n; i++) {
			t[i] = sc.nextInt();
			x[i] = sc.nextInt();
			y[i] = sc.nextInt();
		}
		boolean able = true;
		if((x[0]+y[0])<=t[0]&&(x[0]+y[0])%2==t[0]%2) {
			for(int i = 1; i < n; i++) {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			}
			System.out.println(able ?  "Yes":"No");
		}
		else 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 int[] t = new int[n]; t new int[n] n int[] x = new int[n]; x new int[n] n int[] y = new int[n]; y new int[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 boolean able = true; able true if((x[0]+y[0])<=t[0]&&(x[0]+y[0])%2==t[0]%2) {
			for(int i = 1; i < n; i++) {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			}
			System.out.println(able ?  "Yes":"No");
		}
		else System.out.println("No"); (x[0]+y[0])<=t[0]&&(x[0]+y[0])%2==t[0]%2 (x[0]+y[0])<=t[0] (x[0]+y[0]) x[0] x 0 y[0] y 0 t[0] t 0 (x[0]+y[0])%2==t[0]%2 (x[0]+y[0])%2 (x[0]+y[0]) x[0] x 0 y[0] y 0 2 t[0]%2 t[0] t 0 2 {
			for(int i = 1; i < n; i++) {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			}
			System.out.println(able ?  "Yes":"No");
		} for(int i = 1; i < n; i++) {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			} int i = 1; int i = 1; i 1 i < n i n i++ i++ i {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			} {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			} long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]); d 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 long time = t[i]-t[i-1]; time t[i]-t[i-1] t[i] t i t[i-1] t i-1 i 1 if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				} d<=time&&d%2==time%2 d<=time d time d%2==time%2 d%2 d 2 time%2 time 2 {
					continue;
				} continue; {
					able = false;
					break;
				} able = false able false break; System.out.println(able ?  "Yes":"No") System.out.println System.out System System.out able ?  "Yes":"No" able "Yes" "No" System.out.println("No") System.out.println System.out System System.out "No" String[] args args public class Main{
	public static void main (String[] args){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] t = new int[n];
		int[] x = new int[n];
		int[] y = new int[n];
		for(int i = 0; i < n; i++) {
			t[i] = sc.nextInt();
			x[i] = sc.nextInt();
			y[i] = sc.nextInt();
		}
		boolean able = true;
		if((x[0]+y[0])<=t[0]&&(x[0]+y[0])%2==t[0]%2) {
			for(int i = 1; i < n; i++) {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			}
			System.out.println(able ?  "Yes":"No");
		}
		else System.out.println("No");
	}
} public class Main{
	public static void main (String[] args){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] t = new int[n];
		int[] x = new int[n];
		int[] y = new int[n];
		for(int i = 0; i < n; i++) {
			t[i] = sc.nextInt();
			x[i] = sc.nextInt();
			y[i] = sc.nextInt();
		}
		boolean able = true;
		if((x[0]+y[0])<=t[0]&&(x[0]+y[0])%2==t[0]%2) {
			for(int i = 1; i < n; i++) {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			}
			System.out.println(able ?  "Yes":"No");
		}
		else System.out.println("No");
	}
} Main
import java.util.*;
import java.math.RoundingMode;
import java.math.BigDecimal;
 
 
 
public class Main{
	public static void main (String[] args){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] t = new int[n];
		int[] x = new int[n];
		int[] y = new int[n];
		for(int i = 0; i < n; i++) {
			t[i] = sc.nextInt();
			x[i] = sc.nextInt();
			y[i] = sc.nextInt();
		}
		boolean able = true;
		if((x[0]+y[0])<=t[0]&&(x[0]+y[0])%2==t[0]%2) {
			for(int i = 1; i < n; i++) {
				long d = Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
				long time = t[i]-t[i-1];
				if(d<=time&&d%2==time%2) {
					continue;
				}
				else {
					able = false;
					break;
				}
			}
			System.out.println(able ?  "Yes":"No");
		}
		else System.out.println("No");
	}
}