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

public class Main {

	static final BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

	public static void main(String[] args) throws IOException {

		// --- input ---
		int val = toInt(in.readLine());
		int[][] data = new int[val][];
		for(int i=0; i < val; i++) {
			data[i] = toIntAry(in.readLine().split(" "));
		}

		// --- resolv ---
		int[] cur = {0, 0, 0};
		int[] mv = new int[3];
		for(int[] next : data) {

			for(int i=0; i < 3; i++) {
				mv[i] = Math.abs(next[i] - cur[i]);
			}

			if(mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2) {
				System.out.println("No");
				return;
			}

			// current
			cur = next;
		}

		System.out.println("Yes");
	}

	public static int toInt(String val) {
		return Integer.parseInt(val);
	}

	public static int[] toIntAry(String[] vals) {
		int[] vAry = new int[vals.length];
		for(int i=0; i < vals.length; i++) {
			vAry[i] = toInt(vals[i]);
		}
		return vAry;
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main {

	static final BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

	public static void main(String[] args) throws IOException {

		// --- input ---
		int val = toInt(in.readLine());
		int[][] data = new int[val][];
		for(int i=0; i < val; i++) {
			data[i] = toIntAry(in.readLine().split(" "));
		}

		// --- resolv ---
		int[] cur = {0, 0, 0};
		int[] mv = new int[3];
		for(int[] next : data) {

			for(int i=0; i < 3; i++) {
				mv[i] = Math.abs(next[i] - cur[i]);
			}

			if(mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2) {
				System.out.println("No");
				return;
			}

			// current
			cur = next;
		}

		System.out.println("Yes");
	}

	public static int toInt(String val) {
		return Integer.parseInt(val);
	}

	public static int[] toIntAry(String[] vals) {
		int[] vAry = new int[vals.length];
		for(int i=0; i < vals.length; i++) {
			vAry[i] = toInt(vals[i]);
		}
		return vAry;
	}
} Main static final BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); in new BufferedReader(new InputStreamReader(System.in)) public static void main(String[] args) throws IOException {

		// --- input ---
		int val = toInt(in.readLine());
		int[][] data = new int[val][];
		for(int i=0; i < val; i++) {
			data[i] = toIntAry(in.readLine().split(" "));
		}

		// --- resolv ---
		int[] cur = {0, 0, 0};
		int[] mv = new int[3];
		for(int[] next : data) {

			for(int i=0; i < 3; i++) {
				mv[i] = Math.abs(next[i] - cur[i]);
			}

			if(mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2) {
				System.out.println("No");
				return;
			}

			// current
			cur = next;
		}

		System.out.println("Yes");
	} main {

		// --- input ---
		int val = toInt(in.readLine());
		int[][] data = new int[val][];
		for(int i=0; i < val; i++) {
			data[i] = toIntAry(in.readLine().split(" "));
		}

		// --- resolv ---
		int[] cur = {0, 0, 0};
		int[] mv = new int[3];
		for(int[] next : data) {

			for(int i=0; i < 3; i++) {
				mv[i] = Math.abs(next[i] - cur[i]);
			}

			if(mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2) {
				System.out.println("No");
				return;
			}

			// current
			cur = next;
		}

		System.out.println("Yes");
	} int val = toInt(in.readLine()); val toInt(in.readLine()) toInt in.readLine() in.readLine in int[][] data = new int[val][]; data new int[val][] val for(int i=0; i < val; i++) {
			data[i] = toIntAry(in.readLine().split(" "));
		} int i=0; int i=0; i 0 i < val i val i++ i++ i {
			data[i] = toIntAry(in.readLine().split(" "));
		} {
			data[i] = toIntAry(in.readLine().split(" "));
		} data[i] = toIntAry(in.readLine().split(" ")) data[i] data i toIntAry(in.readLine().split(" ")) toIntAry in.readLine().split(" ") in.readLine().split in.readLine() in.readLine in " " int[] cur = {0, 0, 0}; cur {0, 0, 0} 0 0 0 int[] mv = new int[3]; mv new int[3] 3 for(int[] next : data) {

			for(int i=0; i < 3; i++) {
				mv[i] = Math.abs(next[i] - cur[i]);
			}

			if(mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2) {
				System.out.println("No");
				return;
			}

			// current
			cur = next;
		} int[] next data {

			for(int i=0; i < 3; i++) {
				mv[i] = Math.abs(next[i] - cur[i]);
			}

			if(mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2) {
				System.out.println("No");
				return;
			}

			// current
			cur = next;
		} {

			for(int i=0; i < 3; i++) {
				mv[i] = Math.abs(next[i] - cur[i]);
			}

			if(mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2) {
				System.out.println("No");
				return;
			}

			// current
			cur = next;
		} for(int i=0; i < 3; i++) {
				mv[i] = Math.abs(next[i] - cur[i]);
			} int i=0; int i=0; i 0 i < 3 i 3 i++ i++ i {
				mv[i] = Math.abs(next[i] - cur[i]);
			} {
				mv[i] = Math.abs(next[i] - cur[i]);
			} mv[i] = Math.abs(next[i] - cur[i]) mv[i] mv i Math.abs(next[i] - cur[i]) Math.abs Math next[i] - cur[i] next[i] next i cur[i] cur i if(mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2) {
				System.out.println("No");
				return;
			} mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2 mv[0] < (mv[1] + mv[2]) mv[0] mv 0 (mv[1] + mv[2]) mv[1] mv 1 mv[2] mv 2 mv[0] % 2 != (mv[1] + mv[2]) % 2 mv[0] % 2 mv[0] mv 0 2 (mv[1] + mv[2]) % 2 (mv[1] + mv[2]) mv[1] mv 1 mv[2] mv 2 2 {
				System.out.println("No");
				return;
			} System.out.println("No") System.out.println System.out System System.out "No" return; cur = next cur next System.out.println("Yes") System.out.println System.out System System.out "Yes" String[] args args public static int toInt(String val) {
		return Integer.parseInt(val);
	} toInt {
		return Integer.parseInt(val);
	} return Integer.parseInt(val); Integer.parseInt(val) Integer.parseInt Integer val String val val public static int[] toIntAry(String[] vals) {
		int[] vAry = new int[vals.length];
		for(int i=0; i < vals.length; i++) {
			vAry[i] = toInt(vals[i]);
		}
		return vAry;
	} toIntAry {
		int[] vAry = new int[vals.length];
		for(int i=0; i < vals.length; i++) {
			vAry[i] = toInt(vals[i]);
		}
		return vAry;
	} int[] vAry = new int[vals.length]; vAry new int[vals.length] vals.length vals vals.length for(int i=0; i < vals.length; i++) {
			vAry[i] = toInt(vals[i]);
		} int i=0; int i=0; i 0 i < vals.length i vals.length vals vals.length i++ i++ i {
			vAry[i] = toInt(vals[i]);
		} {
			vAry[i] = toInt(vals[i]);
		} vAry[i] = toInt(vals[i]) vAry[i] vAry i toInt(vals[i]) toInt vals[i] vals i return vAry; vAry String[] vals vals public class Main {

	static final BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

	public static void main(String[] args) throws IOException {

		// --- input ---
		int val = toInt(in.readLine());
		int[][] data = new int[val][];
		for(int i=0; i < val; i++) {
			data[i] = toIntAry(in.readLine().split(" "));
		}

		// --- resolv ---
		int[] cur = {0, 0, 0};
		int[] mv = new int[3];
		for(int[] next : data) {

			for(int i=0; i < 3; i++) {
				mv[i] = Math.abs(next[i] - cur[i]);
			}

			if(mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2) {
				System.out.println("No");
				return;
			}

			// current
			cur = next;
		}

		System.out.println("Yes");
	}

	public static int toInt(String val) {
		return Integer.parseInt(val);
	}

	public static int[] toIntAry(String[] vals) {
		int[] vAry = new int[vals.length];
		for(int i=0; i < vals.length; i++) {
			vAry[i] = toInt(vals[i]);
		}
		return vAry;
	}
} public class Main {

	static final BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

	public static void main(String[] args) throws IOException {

		// --- input ---
		int val = toInt(in.readLine());
		int[][] data = new int[val][];
		for(int i=0; i < val; i++) {
			data[i] = toIntAry(in.readLine().split(" "));
		}

		// --- resolv ---
		int[] cur = {0, 0, 0};
		int[] mv = new int[3];
		for(int[] next : data) {

			for(int i=0; i < 3; i++) {
				mv[i] = Math.abs(next[i] - cur[i]);
			}

			if(mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2) {
				System.out.println("No");
				return;
			}

			// current
			cur = next;
		}

		System.out.println("Yes");
	}

	public static int toInt(String val) {
		return Integer.parseInt(val);
	}

	public static int[] toIntAry(String[] vals) {
		int[] vAry = new int[vals.length];
		for(int i=0; i < vals.length; i++) {
			vAry[i] = toInt(vals[i]);
		}
		return vAry;
	}
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	static final BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

	public static void main(String[] args) throws IOException {

		// --- input ---
		int val = toInt(in.readLine());
		int[][] data = new int[val][];
		for(int i=0; i < val; i++) {
			data[i] = toIntAry(in.readLine().split(" "));
		}

		// --- resolv ---
		int[] cur = {0, 0, 0};
		int[] mv = new int[3];
		for(int[] next : data) {

			for(int i=0; i < 3; i++) {
				mv[i] = Math.abs(next[i] - cur[i]);
			}

			if(mv[0] < (mv[1] + mv[2]) || mv[0] % 2 != (mv[1] + mv[2]) % 2) {
				System.out.println("No");
				return;
			}

			// current
			cur = next;
		}

		System.out.println("Yes");
	}

	public static int toInt(String val) {
		return Integer.parseInt(val);
	}

	public static int[] toIntAry(String[] vals) {
		int[] vAry = new int[vals.length];
		for(int i=0; i < vals.length; i++) {
			vAry[i] = toInt(vals[i]);
		}
		return vAry;
	}
}