import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = Integer.parseInt(scanner.nextLine());

		List<List<Integer>> points = new ArrayList<>();
		List<Integer> start = new ArrayList<>();
		start.add(0);
		start.add(0);
		start.add(0);
		points.add(start);
		for (int i = 0; i < n; i++) {
			List<Integer> point = new ArrayList<>();
			String[] txy = scanner.nextLine().split(" ");
			point.add(Integer.parseInt(txy[0]));
			point.add(Integer.parseInt(txy[1]));
			point.add(Integer.parseInt(txy[2]));
			points.add(point);
		}

		for (int i = 1; i < n + 1; i++) {
			List<Integer> current = points.get(i - 1);
			List<Integer> target = points.get(i);
			int manhattan = manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2));
			int seconds = target.get(0) - current.get(0);

			if (manhattan > seconds) {
				System.out.println("No");
				System.exit(0);
			}
			if ((seconds - manhattan) % 2 == 1) {
				System.out.println("No");
				System.exit(0);
			}
		}
		System.out.println("Yes");
	}

	public static int manhattanDist(int currentX, int currentY, int targetX, int targetY) {
		return Math.abs(targetX - currentX) + Math.abs(targetY - currentY);
	}
} import java.util.ArrayList; ArrayList java.util import java.util.List; List java.util import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = Integer.parseInt(scanner.nextLine());

		List<List<Integer>> points = new ArrayList<>();
		List<Integer> start = new ArrayList<>();
		start.add(0);
		start.add(0);
		start.add(0);
		points.add(start);
		for (int i = 0; i < n; i++) {
			List<Integer> point = new ArrayList<>();
			String[] txy = scanner.nextLine().split(" ");
			point.add(Integer.parseInt(txy[0]));
			point.add(Integer.parseInt(txy[1]));
			point.add(Integer.parseInt(txy[2]));
			points.add(point);
		}

		for (int i = 1; i < n + 1; i++) {
			List<Integer> current = points.get(i - 1);
			List<Integer> target = points.get(i);
			int manhattan = manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2));
			int seconds = target.get(0) - current.get(0);

			if (manhattan > seconds) {
				System.out.println("No");
				System.exit(0);
			}
			if ((seconds - manhattan) % 2 == 1) {
				System.out.println("No");
				System.exit(0);
			}
		}
		System.out.println("Yes");
	}

	public static int manhattanDist(int currentX, int currentY, int targetX, int targetY) {
		return Math.abs(targetX - currentX) + Math.abs(targetY - currentY);
	}
} Main public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = Integer.parseInt(scanner.nextLine());

		List<List<Integer>> points = new ArrayList<>();
		List<Integer> start = new ArrayList<>();
		start.add(0);
		start.add(0);
		start.add(0);
		points.add(start);
		for (int i = 0; i < n; i++) {
			List<Integer> point = new ArrayList<>();
			String[] txy = scanner.nextLine().split(" ");
			point.add(Integer.parseInt(txy[0]));
			point.add(Integer.parseInt(txy[1]));
			point.add(Integer.parseInt(txy[2]));
			points.add(point);
		}

		for (int i = 1; i < n + 1; i++) {
			List<Integer> current = points.get(i - 1);
			List<Integer> target = points.get(i);
			int manhattan = manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2));
			int seconds = target.get(0) - current.get(0);

			if (manhattan > seconds) {
				System.out.println("No");
				System.exit(0);
			}
			if ((seconds - manhattan) % 2 == 1) {
				System.out.println("No");
				System.exit(0);
			}
		}
		System.out.println("Yes");
	} main {
		Scanner scanner = new Scanner(System.in);
		int n = Integer.parseInt(scanner.nextLine());

		List<List<Integer>> points = new ArrayList<>();
		List<Integer> start = new ArrayList<>();
		start.add(0);
		start.add(0);
		start.add(0);
		points.add(start);
		for (int i = 0; i < n; i++) {
			List<Integer> point = new ArrayList<>();
			String[] txy = scanner.nextLine().split(" ");
			point.add(Integer.parseInt(txy[0]));
			point.add(Integer.parseInt(txy[1]));
			point.add(Integer.parseInt(txy[2]));
			points.add(point);
		}

		for (int i = 1; i < n + 1; i++) {
			List<Integer> current = points.get(i - 1);
			List<Integer> target = points.get(i);
			int manhattan = manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2));
			int seconds = target.get(0) - current.get(0);

			if (manhattan > seconds) {
				System.out.println("No");
				System.exit(0);
			}
			if ((seconds - manhattan) % 2 == 1) {
				System.out.println("No");
				System.exit(0);
			}
		}
		System.out.println("Yes");
	} Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) int n = Integer.parseInt(scanner.nextLine()); n Integer.parseInt(scanner.nextLine()) Integer.parseInt Integer scanner.nextLine() scanner.nextLine scanner List<List<Integer>> points = new ArrayList<>(); points new ArrayList<>() List<Integer> start = new ArrayList<>(); start new ArrayList<>() start.add(0) start.add start 0 start.add(0) start.add start 0 start.add(0) start.add start 0 points.add(start) points.add points start for (int i = 0; i < n; i++) {
			List<Integer> point = new ArrayList<>();
			String[] txy = scanner.nextLine().split(" ");
			point.add(Integer.parseInt(txy[0]));
			point.add(Integer.parseInt(txy[1]));
			point.add(Integer.parseInt(txy[2]));
			points.add(point);
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			List<Integer> point = new ArrayList<>();
			String[] txy = scanner.nextLine().split(" ");
			point.add(Integer.parseInt(txy[0]));
			point.add(Integer.parseInt(txy[1]));
			point.add(Integer.parseInt(txy[2]));
			points.add(point);
		} {
			List<Integer> point = new ArrayList<>();
			String[] txy = scanner.nextLine().split(" ");
			point.add(Integer.parseInt(txy[0]));
			point.add(Integer.parseInt(txy[1]));
			point.add(Integer.parseInt(txy[2]));
			points.add(point);
		} List<Integer> point = new ArrayList<>(); point new ArrayList<>() String[] txy = scanner.nextLine().split(" "); txy scanner.nextLine().split(" ") scanner.nextLine().split scanner.nextLine() scanner.nextLine scanner " " point.add(Integer.parseInt(txy[0])) point.add point Integer.parseInt(txy[0]) Integer.parseInt Integer txy[0] txy 0 point.add(Integer.parseInt(txy[1])) point.add point Integer.parseInt(txy[1]) Integer.parseInt Integer txy[1] txy 1 point.add(Integer.parseInt(txy[2])) point.add point Integer.parseInt(txy[2]) Integer.parseInt Integer txy[2] txy 2 points.add(point) points.add points point for (int i = 1; i < n + 1; i++) {
			List<Integer> current = points.get(i - 1);
			List<Integer> target = points.get(i);
			int manhattan = manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2));
			int seconds = target.get(0) - current.get(0);

			if (manhattan > seconds) {
				System.out.println("No");
				System.exit(0);
			}
			if ((seconds - manhattan) % 2 == 1) {
				System.out.println("No");
				System.exit(0);
			}
		} int i = 1; int i = 1; i 1 i < n + 1 i n + 1 n 1 i++ i++ i {
			List<Integer> current = points.get(i - 1);
			List<Integer> target = points.get(i);
			int manhattan = manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2));
			int seconds = target.get(0) - current.get(0);

			if (manhattan > seconds) {
				System.out.println("No");
				System.exit(0);
			}
			if ((seconds - manhattan) % 2 == 1) {
				System.out.println("No");
				System.exit(0);
			}
		} {
			List<Integer> current = points.get(i - 1);
			List<Integer> target = points.get(i);
			int manhattan = manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2));
			int seconds = target.get(0) - current.get(0);

			if (manhattan > seconds) {
				System.out.println("No");
				System.exit(0);
			}
			if ((seconds - manhattan) % 2 == 1) {
				System.out.println("No");
				System.exit(0);
			}
		} List<Integer> current = points.get(i - 1); current points.get(i - 1) points.get points i - 1 i 1 List<Integer> target = points.get(i); target points.get(i) points.get points i int manhattan = manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2)); manhattan manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2)) manhattanDist current.get(1) current.get current 1 current.get(2) current.get current 2 target.get(1) target.get target 1 target.get(2) target.get target 2 int seconds = target.get(0) - current.get(0); seconds target.get(0) - current.get(0) target.get(0) target.get target 0 current.get(0) current.get current 0 if (manhattan > seconds) {
				System.out.println("No");
				System.exit(0);
			} manhattan > seconds manhattan seconds {
				System.out.println("No");
				System.exit(0);
			} System.out.println("No") System.out.println System.out System System.out "No" System.exit(0) System.exit System 0 if ((seconds - manhattan) % 2 == 1) {
				System.out.println("No");
				System.exit(0);
			} (seconds - manhattan) % 2 == 1 (seconds - manhattan) % 2 (seconds - manhattan) seconds manhattan 2 1 {
				System.out.println("No");
				System.exit(0);
			} System.out.println("No") System.out.println System.out System System.out "No" System.exit(0) System.exit System 0 System.out.println("Yes") System.out.println System.out System System.out "Yes" String[] args args public static int manhattanDist(int currentX, int currentY, int targetX, int targetY) {
		return Math.abs(targetX - currentX) + Math.abs(targetY - currentY);
	} manhattanDist {
		return Math.abs(targetX - currentX) + Math.abs(targetY - currentY);
	} return Math.abs(targetX - currentX) + Math.abs(targetY - currentY); Math.abs(targetX - currentX) + Math.abs(targetY - currentY) Math.abs(targetX - currentX) Math.abs Math targetX - currentX targetX currentX Math.abs(targetY - currentY) Math.abs Math targetY - currentY targetY currentY int currentX currentX int currentY currentY int targetX targetX int targetY targetY public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = Integer.parseInt(scanner.nextLine());

		List<List<Integer>> points = new ArrayList<>();
		List<Integer> start = new ArrayList<>();
		start.add(0);
		start.add(0);
		start.add(0);
		points.add(start);
		for (int i = 0; i < n; i++) {
			List<Integer> point = new ArrayList<>();
			String[] txy = scanner.nextLine().split(" ");
			point.add(Integer.parseInt(txy[0]));
			point.add(Integer.parseInt(txy[1]));
			point.add(Integer.parseInt(txy[2]));
			points.add(point);
		}

		for (int i = 1; i < n + 1; i++) {
			List<Integer> current = points.get(i - 1);
			List<Integer> target = points.get(i);
			int manhattan = manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2));
			int seconds = target.get(0) - current.get(0);

			if (manhattan > seconds) {
				System.out.println("No");
				System.exit(0);
			}
			if ((seconds - manhattan) % 2 == 1) {
				System.out.println("No");
				System.exit(0);
			}
		}
		System.out.println("Yes");
	}

	public static int manhattanDist(int currentX, int currentY, int targetX, int targetY) {
		return Math.abs(targetX - currentX) + Math.abs(targetY - currentY);
	}
} public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = Integer.parseInt(scanner.nextLine());

		List<List<Integer>> points = new ArrayList<>();
		List<Integer> start = new ArrayList<>();
		start.add(0);
		start.add(0);
		start.add(0);
		points.add(start);
		for (int i = 0; i < n; i++) {
			List<Integer> point = new ArrayList<>();
			String[] txy = scanner.nextLine().split(" ");
			point.add(Integer.parseInt(txy[0]));
			point.add(Integer.parseInt(txy[1]));
			point.add(Integer.parseInt(txy[2]));
			points.add(point);
		}

		for (int i = 1; i < n + 1; i++) {
			List<Integer> current = points.get(i - 1);
			List<Integer> target = points.get(i);
			int manhattan = manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2));
			int seconds = target.get(0) - current.get(0);

			if (manhattan > seconds) {
				System.out.println("No");
				System.exit(0);
			}
			if ((seconds - manhattan) % 2 == 1) {
				System.out.println("No");
				System.exit(0);
			}
		}
		System.out.println("Yes");
	}

	public static int manhattanDist(int currentX, int currentY, int targetX, int targetY) {
		return Math.abs(targetX - currentX) + Math.abs(targetY - currentY);
	}
} Main
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = Integer.parseInt(scanner.nextLine());

		List<List<Integer>> points = new ArrayList<>();
		List<Integer> start = new ArrayList<>();
		start.add(0);
		start.add(0);
		start.add(0);
		points.add(start);
		for (int i = 0; i < n; i++) {
			List<Integer> point = new ArrayList<>();
			String[] txy = scanner.nextLine().split(" ");
			point.add(Integer.parseInt(txy[0]));
			point.add(Integer.parseInt(txy[1]));
			point.add(Integer.parseInt(txy[2]));
			points.add(point);
		}

		for (int i = 1; i < n + 1; i++) {
			List<Integer> current = points.get(i - 1);
			List<Integer> target = points.get(i);
			int manhattan = manhattanDist(current.get(1), current.get(2), target.get(1), target.get(2));
			int seconds = target.get(0) - current.get(0);

			if (manhattan > seconds) {
				System.out.println("No");
				System.exit(0);
			}
			if ((seconds - manhattan) % 2 == 1) {
				System.out.println("No");
				System.exit(0);
			}
		}
		System.out.println("Yes");
	}

	public static int manhattanDist(int currentX, int currentY, int targetX, int targetY) {
		return Math.abs(targetX - currentX) + Math.abs(targetY - currentY);
	}
}