import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(buff.readLine());
		boolean flag = true;
		int t = 0,x = 0, y = 0;
		while(N-- > 0){
			String[] box = buff.readLine().split(" ");
			int t_tmp = Integer.parseInt(box[0]);
			int x_tmp = Integer.parseInt(box[1]);
			int y_tmp = Integer.parseInt(box[2]);

			int abs_t = Math.abs(t - t_tmp);
			int abs_x = Math.abs(x - x_tmp);
			int abs_y = Math.abs(y - y_tmp);

			//System.out.println("x : " + x + " y : " + y + " t : " + t + " x_tmp : " + x_tmp + " y_tmp : " + y_tmp + " abs_x : " + abs_x + "abs_y : " + abs_y);
			boolean stay_flag = (abs_x + abs_y % 2 == 0) == (abs_t % 2 == 0);
			if(abs_t == abs_x + abs_y){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else if(abs_t > abs_x + abs_y && stay_flag){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else {
				flag = false;
			}
		}

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

	static long f() {
		long ans = 0;

		return ans;
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(buff.readLine());
		boolean flag = true;
		int t = 0,x = 0, y = 0;
		while(N-- > 0){
			String[] box = buff.readLine().split(" ");
			int t_tmp = Integer.parseInt(box[0]);
			int x_tmp = Integer.parseInt(box[1]);
			int y_tmp = Integer.parseInt(box[2]);

			int abs_t = Math.abs(t - t_tmp);
			int abs_x = Math.abs(x - x_tmp);
			int abs_y = Math.abs(y - y_tmp);

			//System.out.println("x : " + x + " y : " + y + " t : " + t + " x_tmp : " + x_tmp + " y_tmp : " + y_tmp + " abs_x : " + abs_x + "abs_y : " + abs_y);
			boolean stay_flag = (abs_x + abs_y % 2 == 0) == (abs_t % 2 == 0);
			if(abs_t == abs_x + abs_y){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else if(abs_t > abs_x + abs_y && stay_flag){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else {
				flag = false;
			}
		}

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

	static long f() {
		long ans = 0;

		return ans;
	}
} Main public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(buff.readLine());
		boolean flag = true;
		int t = 0,x = 0, y = 0;
		while(N-- > 0){
			String[] box = buff.readLine().split(" ");
			int t_tmp = Integer.parseInt(box[0]);
			int x_tmp = Integer.parseInt(box[1]);
			int y_tmp = Integer.parseInt(box[2]);

			int abs_t = Math.abs(t - t_tmp);
			int abs_x = Math.abs(x - x_tmp);
			int abs_y = Math.abs(y - y_tmp);

			//System.out.println("x : " + x + " y : " + y + " t : " + t + " x_tmp : " + x_tmp + " y_tmp : " + y_tmp + " abs_x : " + abs_x + "abs_y : " + abs_y);
			boolean stay_flag = (abs_x + abs_y % 2 == 0) == (abs_t % 2 == 0);
			if(abs_t == abs_x + abs_y){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else if(abs_t > abs_x + abs_y && stay_flag){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else {
				flag = false;
			}
		}

		if(flag){
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	} main {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(buff.readLine());
		boolean flag = true;
		int t = 0,x = 0, y = 0;
		while(N-- > 0){
			String[] box = buff.readLine().split(" ");
			int t_tmp = Integer.parseInt(box[0]);
			int x_tmp = Integer.parseInt(box[1]);
			int y_tmp = Integer.parseInt(box[2]);

			int abs_t = Math.abs(t - t_tmp);
			int abs_x = Math.abs(x - x_tmp);
			int abs_y = Math.abs(y - y_tmp);

			//System.out.println("x : " + x + " y : " + y + " t : " + t + " x_tmp : " + x_tmp + " y_tmp : " + y_tmp + " abs_x : " + abs_x + "abs_y : " + abs_y);
			boolean stay_flag = (abs_x + abs_y % 2 == 0) == (abs_t % 2 == 0);
			if(abs_t == abs_x + abs_y){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else if(abs_t > abs_x + abs_y && stay_flag){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else {
				flag = false;
			}
		}

		if(flag){
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	} BufferedReader buff = null; buff null buff = new BufferedReader(new InputStreamReader(System.in)) buff new BufferedReader(new InputStreamReader(System.in)) int N = Integer.parseInt(buff.readLine()); N Integer.parseInt(buff.readLine()) Integer.parseInt Integer buff.readLine() buff.readLine buff boolean flag = true; flag true int t = 0 t 0 x = 0 x 0 y = 0; y 0 while(N-- > 0){
			String[] box = buff.readLine().split(" ");
			int t_tmp = Integer.parseInt(box[0]);
			int x_tmp = Integer.parseInt(box[1]);
			int y_tmp = Integer.parseInt(box[2]);

			int abs_t = Math.abs(t - t_tmp);
			int abs_x = Math.abs(x - x_tmp);
			int abs_y = Math.abs(y - y_tmp);

			//System.out.println("x : " + x + " y : " + y + " t : " + t + " x_tmp : " + x_tmp + " y_tmp : " + y_tmp + " abs_x : " + abs_x + "abs_y : " + abs_y);
			boolean stay_flag = (abs_x + abs_y % 2 == 0) == (abs_t % 2 == 0);
			if(abs_t == abs_x + abs_y){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else if(abs_t > abs_x + abs_y && stay_flag){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else {
				flag = false;
			}
		} N-- > 0 N-- N 0 {
			String[] box = buff.readLine().split(" ");
			int t_tmp = Integer.parseInt(box[0]);
			int x_tmp = Integer.parseInt(box[1]);
			int y_tmp = Integer.parseInt(box[2]);

			int abs_t = Math.abs(t - t_tmp);
			int abs_x = Math.abs(x - x_tmp);
			int abs_y = Math.abs(y - y_tmp);

			//System.out.println("x : " + x + " y : " + y + " t : " + t + " x_tmp : " + x_tmp + " y_tmp : " + y_tmp + " abs_x : " + abs_x + "abs_y : " + abs_y);
			boolean stay_flag = (abs_x + abs_y % 2 == 0) == (abs_t % 2 == 0);
			if(abs_t == abs_x + abs_y){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else if(abs_t > abs_x + abs_y && stay_flag){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else {
				flag = false;
			}
		} String[] box = buff.readLine().split(" "); box buff.readLine().split(" ") buff.readLine().split buff.readLine() buff.readLine buff " " int t_tmp = Integer.parseInt(box[0]); t_tmp Integer.parseInt(box[0]) Integer.parseInt Integer box[0] box 0 int x_tmp = Integer.parseInt(box[1]); x_tmp Integer.parseInt(box[1]) Integer.parseInt Integer box[1] box 1 int y_tmp = Integer.parseInt(box[2]); y_tmp Integer.parseInt(box[2]) Integer.parseInt Integer box[2] box 2 int abs_t = Math.abs(t - t_tmp); abs_t Math.abs(t - t_tmp) Math.abs Math t - t_tmp t t_tmp int abs_x = Math.abs(x - x_tmp); abs_x Math.abs(x - x_tmp) Math.abs Math x - x_tmp x x_tmp int abs_y = Math.abs(y - y_tmp); abs_y Math.abs(y - y_tmp) Math.abs Math y - y_tmp y y_tmp boolean stay_flag = (abs_x + abs_y % 2 == 0) == (abs_t % 2 == 0); stay_flag (abs_x + abs_y % 2 == 0) == (abs_t % 2 == 0) (abs_x + abs_y % 2 == 0) abs_x + abs_y % 2 abs_x abs_y % 2 abs_y 2 0 (abs_t % 2 == 0) abs_t % 2 abs_t 2 0 if(abs_t == abs_x + abs_y){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else if(abs_t > abs_x + abs_y && stay_flag){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else {
				flag = false;
			} abs_t == abs_x + abs_y abs_t abs_x + abs_y abs_x abs_y {
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} t = t_tmp t t_tmp x = x_tmp x x_tmp y = y_tmp y y_tmp if(abs_t > abs_x + abs_y && stay_flag){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else {
				flag = false;
			} abs_t > abs_x + abs_y && stay_flag abs_t > abs_x + abs_y abs_t abs_x + abs_y abs_x abs_y stay_flag {
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} t = t_tmp t t_tmp x = x_tmp x x_tmp y = y_tmp y y_tmp {
				flag = false;
			} flag = false flag false if(flag){
			System.out.println("Yes");
		} else {
			System.out.println("No");
		} flag {
			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 static long f() {
		long ans = 0;

		return ans;
	} f {
		long ans = 0;

		return ans;
	} long ans = 0; ans 0 return ans; ans public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(buff.readLine());
		boolean flag = true;
		int t = 0,x = 0, y = 0;
		while(N-- > 0){
			String[] box = buff.readLine().split(" ");
			int t_tmp = Integer.parseInt(box[0]);
			int x_tmp = Integer.parseInt(box[1]);
			int y_tmp = Integer.parseInt(box[2]);

			int abs_t = Math.abs(t - t_tmp);
			int abs_x = Math.abs(x - x_tmp);
			int abs_y = Math.abs(y - y_tmp);

			//System.out.println("x : " + x + " y : " + y + " t : " + t + " x_tmp : " + x_tmp + " y_tmp : " + y_tmp + " abs_x : " + abs_x + "abs_y : " + abs_y);
			boolean stay_flag = (abs_x + abs_y % 2 == 0) == (abs_t % 2 == 0);
			if(abs_t == abs_x + abs_y){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else if(abs_t > abs_x + abs_y && stay_flag){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else {
				flag = false;
			}
		}

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

	static long f() {
		long ans = 0;

		return ans;
	}
} public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(buff.readLine());
		boolean flag = true;
		int t = 0,x = 0, y = 0;
		while(N-- > 0){
			String[] box = buff.readLine().split(" ");
			int t_tmp = Integer.parseInt(box[0]);
			int x_tmp = Integer.parseInt(box[1]);
			int y_tmp = Integer.parseInt(box[2]);

			int abs_t = Math.abs(t - t_tmp);
			int abs_x = Math.abs(x - x_tmp);
			int abs_y = Math.abs(y - y_tmp);

			//System.out.println("x : " + x + " y : " + y + " t : " + t + " x_tmp : " + x_tmp + " y_tmp : " + y_tmp + " abs_x : " + abs_x + "abs_y : " + abs_y);
			boolean stay_flag = (abs_x + abs_y % 2 == 0) == (abs_t % 2 == 0);
			if(abs_t == abs_x + abs_y){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else if(abs_t > abs_x + abs_y && stay_flag){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else {
				flag = false;
			}
		}

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

	static long f() {
		long ans = 0;

		return ans;
	}
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(buff.readLine());
		boolean flag = true;
		int t = 0,x = 0, y = 0;
		while(N-- > 0){
			String[] box = buff.readLine().split(" ");
			int t_tmp = Integer.parseInt(box[0]);
			int x_tmp = Integer.parseInt(box[1]);
			int y_tmp = Integer.parseInt(box[2]);

			int abs_t = Math.abs(t - t_tmp);
			int abs_x = Math.abs(x - x_tmp);
			int abs_y = Math.abs(y - y_tmp);

			//System.out.println("x : " + x + " y : " + y + " t : " + t + " x_tmp : " + x_tmp + " y_tmp : " + y_tmp + " abs_x : " + abs_x + "abs_y : " + abs_y);
			boolean stay_flag = (abs_x + abs_y % 2 == 0) == (abs_t % 2 == 0);
			if(abs_t == abs_x + abs_y){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else if(abs_t > abs_x + abs_y && stay_flag){
				t = t_tmp;
				x = x_tmp;
				y = y_tmp;
			} else {
				flag = false;
			}
		}

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

	static long f() {
		long ans = 0;

		return ans;
	}
}