import java.util.Scanner;

class Schedule {
	int t = 0;
	int x = 0;
	int y = 0;
}

public class Main {
	public static void main(String[] args) {

		// 処理対象個数の入力
		Scanner sc = new Scanner(System.in);
		int input_n = sc.nextInt();
		Schedule schedule[] = new Schedule[input_n+1];

		schedule[0] = new Schedule();

		for(int i=1;i<=input_n;i++) {
			schedule[i] = new Schedule();
			schedule[i].t = sc.nextInt();
			schedule[i].x = sc.nextInt();
			schedule[i].y = sc.nextInt();
		}

		sc.close();

		for(int i=1;i<=input_n;i++) {
			int move_time = schedule[i].t - schedule[i-1].t;
			int distance = Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y);

			if(move_time < distance || ((move_time - distance) % 2 == 1)) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");

	}

} import java.util.Scanner; Scanner java.util class Schedule {
	int t = 0;
	int x = 0;
	int y = 0;
} Schedule int t = 0; t 0 int x = 0; x 0 int y = 0; y 0 public class Main {
	public static void main(String[] args) {

		// 処理対象個数の入力
		Scanner sc = new Scanner(System.in);
		int input_n = sc.nextInt();
		Schedule schedule[] = new Schedule[input_n+1];

		schedule[0] = new Schedule();

		for(int i=1;i<=input_n;i++) {
			schedule[i] = new Schedule();
			schedule[i].t = sc.nextInt();
			schedule[i].x = sc.nextInt();
			schedule[i].y = sc.nextInt();
		}

		sc.close();

		for(int i=1;i<=input_n;i++) {
			int move_time = schedule[i].t - schedule[i-1].t;
			int distance = Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y);

			if(move_time < distance || ((move_time - distance) % 2 == 1)) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");

	}

} Main public static void main(String[] args) {

		// 処理対象個数の入力
		Scanner sc = new Scanner(System.in);
		int input_n = sc.nextInt();
		Schedule schedule[] = new Schedule[input_n+1];

		schedule[0] = new Schedule();

		for(int i=1;i<=input_n;i++) {
			schedule[i] = new Schedule();
			schedule[i].t = sc.nextInt();
			schedule[i].x = sc.nextInt();
			schedule[i].y = sc.nextInt();
		}

		sc.close();

		for(int i=1;i<=input_n;i++) {
			int move_time = schedule[i].t - schedule[i-1].t;
			int distance = Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y);

			if(move_time < distance || ((move_time - distance) % 2 == 1)) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");

	} main {

		// 処理対象個数の入力
		Scanner sc = new Scanner(System.in);
		int input_n = sc.nextInt();
		Schedule schedule[] = new Schedule[input_n+1];

		schedule[0] = new Schedule();

		for(int i=1;i<=input_n;i++) {
			schedule[i] = new Schedule();
			schedule[i].t = sc.nextInt();
			schedule[i].x = sc.nextInt();
			schedule[i].y = sc.nextInt();
		}

		sc.close();

		for(int i=1;i<=input_n;i++) {
			int move_time = schedule[i].t - schedule[i-1].t;
			int distance = Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y);

			if(move_time < distance || ((move_time - distance) % 2 == 1)) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");

	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int input_n = sc.nextInt(); input_n sc.nextInt() sc.nextInt sc Schedule schedule[] = new Schedule[input_n+1]; schedule new Schedule[input_n+1] input_n+1 input_n 1 schedule[0] = new Schedule() schedule[0] schedule 0 new Schedule() for(int i=1;i<=input_n;i++) {
			schedule[i] = new Schedule();
			schedule[i].t = sc.nextInt();
			schedule[i].x = sc.nextInt();
			schedule[i].y = sc.nextInt();
		} int i=1; int i=1; i 1 i<=input_n i input_n i++ i++ i {
			schedule[i] = new Schedule();
			schedule[i].t = sc.nextInt();
			schedule[i].x = sc.nextInt();
			schedule[i].y = sc.nextInt();
		} {
			schedule[i] = new Schedule();
			schedule[i].t = sc.nextInt();
			schedule[i].x = sc.nextInt();
			schedule[i].y = sc.nextInt();
		} schedule[i] = new Schedule() schedule[i] schedule i new Schedule() schedule[i].t = sc.nextInt() schedule[i].t schedule[i] schedule i schedule[i].t sc.nextInt() sc.nextInt sc schedule[i].x = sc.nextInt() schedule[i].x schedule[i] schedule i schedule[i].x sc.nextInt() sc.nextInt sc schedule[i].y = sc.nextInt() schedule[i].y schedule[i] schedule i schedule[i].y sc.nextInt() sc.nextInt sc sc.close() sc.close sc for(int i=1;i<=input_n;i++) {
			int move_time = schedule[i].t - schedule[i-1].t;
			int distance = Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y);

			if(move_time < distance || ((move_time - distance) % 2 == 1)) {
				System.out.println("No");
				return;
			}
		} int i=1; int i=1; i 1 i<=input_n i input_n i++ i++ i {
			int move_time = schedule[i].t - schedule[i-1].t;
			int distance = Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y);

			if(move_time < distance || ((move_time - distance) % 2 == 1)) {
				System.out.println("No");
				return;
			}
		} {
			int move_time = schedule[i].t - schedule[i-1].t;
			int distance = Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y);

			if(move_time < distance || ((move_time - distance) % 2 == 1)) {
				System.out.println("No");
				return;
			}
		} int move_time = schedule[i].t - schedule[i-1].t; move_time schedule[i].t - schedule[i-1].t schedule[i].t schedule[i] schedule i schedule[i].t schedule[i-1].t schedule[i-1] schedule i-1 i 1 schedule[i-1].t int distance = Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y); distance Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y) Math.abs(schedule[i].x - schedule[i-1].x) Math.abs Math schedule[i].x - schedule[i-1].x schedule[i].x schedule[i] schedule i schedule[i].x schedule[i-1].x schedule[i-1] schedule i-1 i 1 schedule[i-1].x Math.abs(schedule[i].y - schedule[i-1].y) Math.abs Math schedule[i].y - schedule[i-1].y schedule[i].y schedule[i] schedule i schedule[i].y schedule[i-1].y schedule[i-1] schedule i-1 i 1 schedule[i-1].y if(move_time < distance || ((move_time - distance) % 2 == 1)) {
				System.out.println("No");
				return;
			} move_time < distance || ((move_time - distance) % 2 == 1) move_time < distance move_time distance ((move_time - distance) % 2 == 1) (move_time - distance) % 2 (move_time - distance) move_time distance 2 1 {
				System.out.println("No");
				return;
			} System.out.println("No") System.out.println System.out System System.out "No" return; System.out.println("Yes") System.out.println System.out System System.out "Yes" String[] args args public class Main {
	public static void main(String[] args) {

		// 処理対象個数の入力
		Scanner sc = new Scanner(System.in);
		int input_n = sc.nextInt();
		Schedule schedule[] = new Schedule[input_n+1];

		schedule[0] = new Schedule();

		for(int i=1;i<=input_n;i++) {
			schedule[i] = new Schedule();
			schedule[i].t = sc.nextInt();
			schedule[i].x = sc.nextInt();
			schedule[i].y = sc.nextInt();
		}

		sc.close();

		for(int i=1;i<=input_n;i++) {
			int move_time = schedule[i].t - schedule[i-1].t;
			int distance = Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y);

			if(move_time < distance || ((move_time - distance) % 2 == 1)) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");

	}

} public class Main {
	public static void main(String[] args) {

		// 処理対象個数の入力
		Scanner sc = new Scanner(System.in);
		int input_n = sc.nextInt();
		Schedule schedule[] = new Schedule[input_n+1];

		schedule[0] = new Schedule();

		for(int i=1;i<=input_n;i++) {
			schedule[i] = new Schedule();
			schedule[i].t = sc.nextInt();
			schedule[i].x = sc.nextInt();
			schedule[i].y = sc.nextInt();
		}

		sc.close();

		for(int i=1;i<=input_n;i++) {
			int move_time = schedule[i].t - schedule[i-1].t;
			int distance = Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y);

			if(move_time < distance || ((move_time - distance) % 2 == 1)) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");

	}

} Main
import java.util.Scanner;

class Schedule {
	int t = 0;
	int x = 0;
	int y = 0;
}

public class Main {
	public static void main(String[] args) {

		// 処理対象個数の入力
		Scanner sc = new Scanner(System.in);
		int input_n = sc.nextInt();
		Schedule schedule[] = new Schedule[input_n+1];

		schedule[0] = new Schedule();

		for(int i=1;i<=input_n;i++) {
			schedule[i] = new Schedule();
			schedule[i].t = sc.nextInt();
			schedule[i].x = sc.nextInt();
			schedule[i].y = sc.nextInt();
		}

		sc.close();

		for(int i=1;i<=input_n;i++) {
			int move_time = schedule[i].t - schedule[i-1].t;
			int distance = Math.abs(schedule[i].x - schedule[i-1].x) + Math.abs(schedule[i].y - schedule[i-1].y);

			if(move_time < distance || ((move_time - distance) % 2 == 1)) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");

	}

}