import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = Integer.parseInt(scan.next());
		int x = 0;
		int y = 0;
		int t = 0;
		boolean possible = true;
		for(int i=0; i<n; ++i) {
			int ti = Integer.parseInt(scan.next());
			int xi = Integer.parseInt(scan.next());
			int yi = Integer.parseInt(scan.next());

			int kyori = Math.abs(x-xi) + Math.abs(y-yi);
			int jikokuNoSa = Math.abs(ti - t);

			if(kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0) {
				t = ti;
				x = xi;
				y = yi;
			} else {
				possible = false;
				break;
			}
		}
		scan.close();

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

	}

} import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = Integer.parseInt(scan.next());
		int x = 0;
		int y = 0;
		int t = 0;
		boolean possible = true;
		for(int i=0; i<n; ++i) {
			int ti = Integer.parseInt(scan.next());
			int xi = Integer.parseInt(scan.next());
			int yi = Integer.parseInt(scan.next());

			int kyori = Math.abs(x-xi) + Math.abs(y-yi);
			int jikokuNoSa = Math.abs(ti - t);

			if(kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0) {
				t = ti;
				x = xi;
				y = yi;
			} else {
				possible = false;
				break;
			}
		}
		scan.close();

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

	}

} Main public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = Integer.parseInt(scan.next());
		int x = 0;
		int y = 0;
		int t = 0;
		boolean possible = true;
		for(int i=0; i<n; ++i) {
			int ti = Integer.parseInt(scan.next());
			int xi = Integer.parseInt(scan.next());
			int yi = Integer.parseInt(scan.next());

			int kyori = Math.abs(x-xi) + Math.abs(y-yi);
			int jikokuNoSa = Math.abs(ti - t);

			if(kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0) {
				t = ti;
				x = xi;
				y = yi;
			} else {
				possible = false;
				break;
			}
		}
		scan.close();

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

	} main {
		Scanner scan = new Scanner(System.in);
		int n = Integer.parseInt(scan.next());
		int x = 0;
		int y = 0;
		int t = 0;
		boolean possible = true;
		for(int i=0; i<n; ++i) {
			int ti = Integer.parseInt(scan.next());
			int xi = Integer.parseInt(scan.next());
			int yi = Integer.parseInt(scan.next());

			int kyori = Math.abs(x-xi) + Math.abs(y-yi);
			int jikokuNoSa = Math.abs(ti - t);

			if(kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0) {
				t = ti;
				x = xi;
				y = yi;
			} else {
				possible = false;
				break;
			}
		}
		scan.close();

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

	} Scanner scan = new Scanner(System.in); scan new Scanner(System.in) int n = Integer.parseInt(scan.next()); n Integer.parseInt(scan.next()) Integer.parseInt Integer scan.next() scan.next scan int x = 0; x 0 int y = 0; y 0 int t = 0; t 0 boolean possible = true; possible true for(int i=0; i<n; ++i) {
			int ti = Integer.parseInt(scan.next());
			int xi = Integer.parseInt(scan.next());
			int yi = Integer.parseInt(scan.next());

			int kyori = Math.abs(x-xi) + Math.abs(y-yi);
			int jikokuNoSa = Math.abs(ti - t);

			if(kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0) {
				t = ti;
				x = xi;
				y = yi;
			} else {
				possible = false;
				break;
			}
		} int i=0; int i=0; i 0 i<n i n ++i ++i i {
			int ti = Integer.parseInt(scan.next());
			int xi = Integer.parseInt(scan.next());
			int yi = Integer.parseInt(scan.next());

			int kyori = Math.abs(x-xi) + Math.abs(y-yi);
			int jikokuNoSa = Math.abs(ti - t);

			if(kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0) {
				t = ti;
				x = xi;
				y = yi;
			} else {
				possible = false;
				break;
			}
		} {
			int ti = Integer.parseInt(scan.next());
			int xi = Integer.parseInt(scan.next());
			int yi = Integer.parseInt(scan.next());

			int kyori = Math.abs(x-xi) + Math.abs(y-yi);
			int jikokuNoSa = Math.abs(ti - t);

			if(kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0) {
				t = ti;
				x = xi;
				y = yi;
			} else {
				possible = false;
				break;
			}
		} int ti = Integer.parseInt(scan.next()); ti Integer.parseInt(scan.next()) Integer.parseInt Integer scan.next() scan.next scan int xi = Integer.parseInt(scan.next()); xi Integer.parseInt(scan.next()) Integer.parseInt Integer scan.next() scan.next scan int yi = Integer.parseInt(scan.next()); yi Integer.parseInt(scan.next()) Integer.parseInt Integer scan.next() scan.next scan int kyori = Math.abs(x-xi) + Math.abs(y-yi); kyori Math.abs(x-xi) + Math.abs(y-yi) Math.abs(x-xi) Math.abs Math x-xi x xi Math.abs(y-yi) Math.abs Math y-yi y yi int jikokuNoSa = Math.abs(ti - t); jikokuNoSa Math.abs(ti - t) Math.abs Math ti - t ti t if(kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0) {
				t = ti;
				x = xi;
				y = yi;
			} else {
				possible = false;
				break;
			} kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0 kyori <=  jikokuNoSa kyori jikokuNoSa Math.abs(jikokuNoSa - kyori) % 2 == 0 Math.abs(jikokuNoSa - kyori) % 2 Math.abs(jikokuNoSa - kyori) Math.abs Math jikokuNoSa - kyori jikokuNoSa kyori 2 0 {
				t = ti;
				x = xi;
				y = yi;
			} t = ti t ti x = xi x xi y = yi y yi {
				possible = false;
				break;
			} possible = false possible false break; scan.close() scan.close scan if(possible) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		} possible {
			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" String[] args args public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = Integer.parseInt(scan.next());
		int x = 0;
		int y = 0;
		int t = 0;
		boolean possible = true;
		for(int i=0; i<n; ++i) {
			int ti = Integer.parseInt(scan.next());
			int xi = Integer.parseInt(scan.next());
			int yi = Integer.parseInt(scan.next());

			int kyori = Math.abs(x-xi) + Math.abs(y-yi);
			int jikokuNoSa = Math.abs(ti - t);

			if(kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0) {
				t = ti;
				x = xi;
				y = yi;
			} else {
				possible = false;
				break;
			}
		}
		scan.close();

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

	}

} public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = Integer.parseInt(scan.next());
		int x = 0;
		int y = 0;
		int t = 0;
		boolean possible = true;
		for(int i=0; i<n; ++i) {
			int ti = Integer.parseInt(scan.next());
			int xi = Integer.parseInt(scan.next());
			int yi = Integer.parseInt(scan.next());

			int kyori = Math.abs(x-xi) + Math.abs(y-yi);
			int jikokuNoSa = Math.abs(ti - t);

			if(kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0) {
				t = ti;
				x = xi;
				y = yi;
			} else {
				possible = false;
				break;
			}
		}
		scan.close();

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

	}

} Main
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = Integer.parseInt(scan.next());
		int x = 0;
		int y = 0;
		int t = 0;
		boolean possible = true;
		for(int i=0; i<n; ++i) {
			int ti = Integer.parseInt(scan.next());
			int xi = Integer.parseInt(scan.next());
			int yi = Integer.parseInt(scan.next());

			int kyori = Math.abs(x-xi) + Math.abs(y-yi);
			int jikokuNoSa = Math.abs(ti - t);

			if(kyori <=  jikokuNoSa && Math.abs(jikokuNoSa - kyori) % 2 == 0) {
				t = ti;
				x = xi;
				y = yi;
			} else {
				possible = false;
				break;
			}
		}
		scan.close();

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

	}

}
