import java.util.Scanner;

class Main{


	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		int[] t = new int[N+1];
		int[] x = new int[N+1];
		int[] y = new int[N+1];

		int[] dx = {-1,0,1,0};
		int[] dy = {0,1,0,-1};

		int p = 0;
		int pt = 0;
		for(int i = 1;i < N+1;i++){
			t[i] = scanner.nextInt();
			x[i] = scanner.nextInt();
			y[i] = scanner.nextInt();

		}

		for(int i = 1;i < N+1;i++){
			int distance = 0;
			int nextp = x[i]+y[i];				
			distance =  t[i] - pt -Math.abs(nextp - p)  ;			////次の地点までの距離
			if(distance < 0){
				System.out.println("No");
				return;
			}
			if(distance != 0){
				int judge = distance%2;
				if(judge == 1){
					System.out.println("No");
					return;
				}
			}
			p = nextp;
			pt = t[i];
		}

		System.out.println("Yes");





	}
}




class Graph{
	int from;
	int to;
	int cost;

	public Graph() {
	}

	public Graph(int f,int t,int c) {
		from = f;
		to= t;
		cost = c;
	}
} import java.util.Scanner; Scanner java.util class Main{


	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		int[] t = new int[N+1];
		int[] x = new int[N+1];
		int[] y = new int[N+1];

		int[] dx = {-1,0,1,0};
		int[] dy = {0,1,0,-1};

		int p = 0;
		int pt = 0;
		for(int i = 1;i < N+1;i++){
			t[i] = scanner.nextInt();
			x[i] = scanner.nextInt();
			y[i] = scanner.nextInt();

		}

		for(int i = 1;i < N+1;i++){
			int distance = 0;
			int nextp = x[i]+y[i];				
			distance =  t[i] - pt -Math.abs(nextp - p)  ;			////次の地点までの距離
			if(distance < 0){
				System.out.println("No");
				return;
			}
			if(distance != 0){
				int judge = distance%2;
				if(judge == 1){
					System.out.println("No");
					return;
				}
			}
			p = nextp;
			pt = t[i];
		}

		System.out.println("Yes");





	}
} Main public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		int[] t = new int[N+1];
		int[] x = new int[N+1];
		int[] y = new int[N+1];

		int[] dx = {-1,0,1,0};
		int[] dy = {0,1,0,-1};

		int p = 0;
		int pt = 0;
		for(int i = 1;i < N+1;i++){
			t[i] = scanner.nextInt();
			x[i] = scanner.nextInt();
			y[i] = scanner.nextInt();

		}

		for(int i = 1;i < N+1;i++){
			int distance = 0;
			int nextp = x[i]+y[i];				
			distance =  t[i] - pt -Math.abs(nextp - p)  ;			////次の地点までの距離
			if(distance < 0){
				System.out.println("No");
				return;
			}
			if(distance != 0){
				int judge = distance%2;
				if(judge == 1){
					System.out.println("No");
					return;
				}
			}
			p = nextp;
			pt = t[i];
		}

		System.out.println("Yes");





	} main {
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		int[] t = new int[N+1];
		int[] x = new int[N+1];
		int[] y = new int[N+1];

		int[] dx = {-1,0,1,0};
		int[] dy = {0,1,0,-1};

		int p = 0;
		int pt = 0;
		for(int i = 1;i < N+1;i++){
			t[i] = scanner.nextInt();
			x[i] = scanner.nextInt();
			y[i] = scanner.nextInt();

		}

		for(int i = 1;i < N+1;i++){
			int distance = 0;
			int nextp = x[i]+y[i];				
			distance =  t[i] - pt -Math.abs(nextp - p)  ;			////次の地点までの距離
			if(distance < 0){
				System.out.println("No");
				return;
			}
			if(distance != 0){
				int judge = distance%2;
				if(judge == 1){
					System.out.println("No");
					return;
				}
			}
			p = nextp;
			pt = t[i];
		}

		System.out.println("Yes");





	} Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) int N = scanner.nextInt(); N scanner.nextInt() scanner.nextInt scanner int[] t = new int[N+1]; t new int[N+1] N+1 N 1 int[] x = new int[N+1]; x new int[N+1] N+1 N 1 int[] y = new int[N+1]; y new int[N+1] N+1 N 1 int[] dx = {-1,0,1,0}; dx {-1,0,1,0} -1 1 0 1 0 int[] dy = {0,1,0,-1}; dy {0,1,0,-1} 0 1 0 -1 1 int p = 0; p 0 int pt = 0; pt 0 for(int i = 1;i < N+1;i++){
			t[i] = scanner.nextInt();
			x[i] = scanner.nextInt();
			y[i] = scanner.nextInt();

		} int i = 1; int i = 1; i 1 i < N+1 i N+1 N 1 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 for(int i = 1;i < N+1;i++){
			int distance = 0;
			int nextp = x[i]+y[i];				
			distance =  t[i] - pt -Math.abs(nextp - p)  ;			////次の地点までの距離
			if(distance < 0){
				System.out.println("No");
				return;
			}
			if(distance != 0){
				int judge = distance%2;
				if(judge == 1){
					System.out.println("No");
					return;
				}
			}
			p = nextp;
			pt = t[i];
		} int i = 1; int i = 1; i 1 i < N+1 i N+1 N 1 i++ i++ i {
			int distance = 0;
			int nextp = x[i]+y[i];				
			distance =  t[i] - pt -Math.abs(nextp - p)  ;			////次の地点までの距離
			if(distance < 0){
				System.out.println("No");
				return;
			}
			if(distance != 0){
				int judge = distance%2;
				if(judge == 1){
					System.out.println("No");
					return;
				}
			}
			p = nextp;
			pt = t[i];
		} {
			int distance = 0;
			int nextp = x[i]+y[i];				
			distance =  t[i] - pt -Math.abs(nextp - p)  ;			////次の地点までの距離
			if(distance < 0){
				System.out.println("No");
				return;
			}
			if(distance != 0){
				int judge = distance%2;
				if(judge == 1){
					System.out.println("No");
					return;
				}
			}
			p = nextp;
			pt = t[i];
		} int distance = 0; distance 0 int nextp = x[i]+y[i]; nextp x[i]+y[i] x[i] x i y[i] y i distance =  t[i] - pt -Math.abs(nextp - p) distance t[i] - pt -Math.abs(nextp - p) t[i] - pt -Math.abs(nextp - p) t[i] t i pt Math.abs(nextp - p) Math.abs Math nextp - p nextp p if(distance < 0){
				System.out.println("No");
				return;
			} distance < 0 distance 0 {
				System.out.println("No");
				return;
			} System.out.println("No") System.out.println System.out System System.out "No" return; if(distance != 0){
				int judge = distance%2;
				if(judge == 1){
					System.out.println("No");
					return;
				}
			} distance != 0 distance 0 {
				int judge = distance%2;
				if(judge == 1){
					System.out.println("No");
					return;
				}
			} int judge = distance%2; judge distance%2 distance 2 if(judge == 1){
					System.out.println("No");
					return;
				} judge == 1 judge 1 {
					System.out.println("No");
					return;
				} System.out.println("No") System.out.println System.out System System.out "No" return; p = nextp p nextp pt = t[i] pt t[i] t i System.out.println("Yes") System.out.println System.out System System.out "Yes" String[] args args class Graph{
	int from;
	int to;
	int cost;

	public Graph() {
	}

	public Graph(int f,int t,int c) {
		from = f;
		to= t;
		cost = c;
	}
} Graph int from; from int to; to int cost; cost public Graph() {
	} Graph {
	} public Graph(int f,int t,int c) {
		from = f;
		to= t;
		cost = c;
	} Graph {
		from = f;
		to= t;
		cost = c;
	} from = f from f to= t to t cost = c cost c int f f int t t int c c
import java.util.Scanner;

class Main{


	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		int[] t = new int[N+1];
		int[] x = new int[N+1];
		int[] y = new int[N+1];

		int[] dx = {-1,0,1,0};
		int[] dy = {0,1,0,-1};

		int p = 0;
		int pt = 0;
		for(int i = 1;i < N+1;i++){
			t[i] = scanner.nextInt();
			x[i] = scanner.nextInt();
			y[i] = scanner.nextInt();

		}

		for(int i = 1;i < N+1;i++){
			int distance = 0;
			int nextp = x[i]+y[i];				
			distance =  t[i] - pt -Math.abs(nextp - p)  ;			////次の地点までの距離
			if(distance < 0){
				System.out.println("No");
				return;
			}
			if(distance != 0){
				int judge = distance%2;
				if(judge == 1){
					System.out.println("No");
					return;
				}
			}
			p = nextp;
			pt = t[i];
		}

		System.out.println("Yes");





	}
}




class Graph{
	int from;
	int to;
	int cost;

	public Graph() {
	}

	public Graph(int f,int t,int c) {
		from = f;
		to= t;
		cost = c;
	}
}
