
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;



public class Main{

	public static void main(String[] args){


		Scanner scan = new Scanner(System.in);

		int N = scan.nextInt();
		scan.nextLine();

		Map<Integer, Integer> map = new LinkedHashMap<>(N);

        for(int i=0; i<N; i++) {

	   		int t = scan.nextInt();
			int x = scan.nextInt();
			int y = scan.nextInt();
			int point = x+y;

			map.put(t,point);

	       }

    	int flagk =0;
    	int flagv =0;

    	int count =0;


	    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {

	       // System.out.println(entry.getKey() + " : " + entry.getValue());
	    	int key = entry.getKey().intValue();
	    	int val = entry.getValue().intValue();

	    	//System.out.println("process: key" + key + "val" + val);


	    	if ( (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) ) {
	    		flagk = key;
	    		flagv = val;
	    	}
	    	else {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	}

	    	++count;
	    	if (count ==N) {
	    		System.out.println("Yes");
	    	}

	    }

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

	public static void main(String[] args){


		Scanner scan = new Scanner(System.in);

		int N = scan.nextInt();
		scan.nextLine();

		Map<Integer, Integer> map = new LinkedHashMap<>(N);

        for(int i=0; i<N; i++) {

	   		int t = scan.nextInt();
			int x = scan.nextInt();
			int y = scan.nextInt();
			int point = x+y;

			map.put(t,point);

	       }

    	int flagk =0;
    	int flagv =0;

    	int count =0;


	    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {

	       // System.out.println(entry.getKey() + " : " + entry.getValue());
	    	int key = entry.getKey().intValue();
	    	int val = entry.getValue().intValue();

	    	//System.out.println("process: key" + key + "val" + val);


	    	if ( (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) ) {
	    		flagk = key;
	    		flagv = val;
	    	}
	    	else {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	}

	    	++count;
	    	if (count ==N) {
	    		System.out.println("Yes");
	    	}

	    }

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


		Scanner scan = new Scanner(System.in);

		int N = scan.nextInt();
		scan.nextLine();

		Map<Integer, Integer> map = new LinkedHashMap<>(N);

        for(int i=0; i<N; i++) {

	   		int t = scan.nextInt();
			int x = scan.nextInt();
			int y = scan.nextInt();
			int point = x+y;

			map.put(t,point);

	       }

    	int flagk =0;
    	int flagv =0;

    	int count =0;


	    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {

	       // System.out.println(entry.getKey() + " : " + entry.getValue());
	    	int key = entry.getKey().intValue();
	    	int val = entry.getValue().intValue();

	    	//System.out.println("process: key" + key + "val" + val);


	    	if ( (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) ) {
	    		flagk = key;
	    		flagv = val;
	    	}
	    	else {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	}

	    	++count;
	    	if (count ==N) {
	    		System.out.println("Yes");
	    	}

	    }

	} main {


		Scanner scan = new Scanner(System.in);

		int N = scan.nextInt();
		scan.nextLine();

		Map<Integer, Integer> map = new LinkedHashMap<>(N);

        for(int i=0; i<N; i++) {

	   		int t = scan.nextInt();
			int x = scan.nextInt();
			int y = scan.nextInt();
			int point = x+y;

			map.put(t,point);

	       }

    	int flagk =0;
    	int flagv =0;

    	int count =0;


	    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {

	       // System.out.println(entry.getKey() + " : " + entry.getValue());
	    	int key = entry.getKey().intValue();
	    	int val = entry.getValue().intValue();

	    	//System.out.println("process: key" + key + "val" + val);


	    	if ( (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) ) {
	    		flagk = key;
	    		flagv = val;
	    	}
	    	else {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	}

	    	++count;
	    	if (count ==N) {
	    		System.out.println("Yes");
	    	}

	    }

	} Scanner scan = new Scanner(System.in); scan new Scanner(System.in) int N = scan.nextInt(); N scan.nextInt() scan.nextInt scan scan.nextLine() scan.nextLine scan Map<Integer, Integer> map = new LinkedHashMap<>(N); map new LinkedHashMap<>(N) for(int i=0; i<N; i++) {

	   		int t = scan.nextInt();
			int x = scan.nextInt();
			int y = scan.nextInt();
			int point = x+y;

			map.put(t,point);

	       } int i=0; int i=0; i 0 i<N i N i++ i++ i {

	   		int t = scan.nextInt();
			int x = scan.nextInt();
			int y = scan.nextInt();
			int point = x+y;

			map.put(t,point);

	       } {

	   		int t = scan.nextInt();
			int x = scan.nextInt();
			int y = scan.nextInt();
			int point = x+y;

			map.put(t,point);

	       } int t = scan.nextInt(); t scan.nextInt() scan.nextInt scan int x = scan.nextInt(); x scan.nextInt() scan.nextInt scan int y = scan.nextInt(); y scan.nextInt() scan.nextInt scan int point = x+y; point x+y x y map.put(t,point) map.put map t point int flagk =0; flagk 0 int flagv =0; flagv 0 int count =0; count 0 for (Map.Entry<Integer, Integer> entry : map.entrySet()) {

	       // System.out.println(entry.getKey() + " : " + entry.getValue());
	    	int key = entry.getKey().intValue();
	    	int val = entry.getValue().intValue();

	    	//System.out.println("process: key" + key + "val" + val);


	    	if ( (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) ) {
	    		flagk = key;
	    		flagv = val;
	    	}
	    	else {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	}

	    	++count;
	    	if (count ==N) {
	    		System.out.println("Yes");
	    	}

	    } Map.Entry<Integer, Integer> entry map.entrySet() map.entrySet map {

	       // System.out.println(entry.getKey() + " : " + entry.getValue());
	    	int key = entry.getKey().intValue();
	    	int val = entry.getValue().intValue();

	    	//System.out.println("process: key" + key + "val" + val);


	    	if ( (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) ) {
	    		flagk = key;
	    		flagv = val;
	    	}
	    	else {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	}

	    	++count;
	    	if (count ==N) {
	    		System.out.println("Yes");
	    	}

	    } {

	       // System.out.println(entry.getKey() + " : " + entry.getValue());
	    	int key = entry.getKey().intValue();
	    	int val = entry.getValue().intValue();

	    	//System.out.println("process: key" + key + "val" + val);


	    	if ( (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) ) {
	    		flagk = key;
	    		flagv = val;
	    	}
	    	else {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	}

	    	++count;
	    	if (count ==N) {
	    		System.out.println("Yes");
	    	}

	    } int key = entry.getKey().intValue(); key entry.getKey().intValue() entry.getKey().intValue entry.getKey() entry.getKey entry int val = entry.getValue().intValue(); val entry.getValue().intValue() entry.getValue().intValue entry.getValue() entry.getValue entry if ( (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) ) {
	    		flagk = key;
	    		flagv = val;
	    	}
	    	else {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	} (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) (key>=val) key val (key%2==val%2) key%2 key 2 val%2 val 2 ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) Math.abs(key-flagk) Math.abs Math key-flagk key flagk Math.abs(val-flagv) Math.abs Math val-flagv val flagv {
	    		flagk = key;
	    		flagv = val;
	    	} flagk = key flagk key flagv = val flagv val {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	} System.out.println("No") System.out.println System.out System System.out "No" break; ++count count if (count ==N) {
	    		System.out.println("Yes");
	    	} count ==N count N {
	    		System.out.println("Yes");
	    	} 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 scan = new Scanner(System.in);

		int N = scan.nextInt();
		scan.nextLine();

		Map<Integer, Integer> map = new LinkedHashMap<>(N);

        for(int i=0; i<N; i++) {

	   		int t = scan.nextInt();
			int x = scan.nextInt();
			int y = scan.nextInt();
			int point = x+y;

			map.put(t,point);

	       }

    	int flagk =0;
    	int flagv =0;

    	int count =0;


	    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {

	       // System.out.println(entry.getKey() + " : " + entry.getValue());
	    	int key = entry.getKey().intValue();
	    	int val = entry.getValue().intValue();

	    	//System.out.println("process: key" + key + "val" + val);


	    	if ( (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) ) {
	    		flagk = key;
	    		flagv = val;
	    	}
	    	else {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	}

	    	++count;
	    	if (count ==N) {
	    		System.out.println("Yes");
	    	}

	    }

	}
} public class Main{

	public static void main(String[] args){


		Scanner scan = new Scanner(System.in);

		int N = scan.nextInt();
		scan.nextLine();

		Map<Integer, Integer> map = new LinkedHashMap<>(N);

        for(int i=0; i<N; i++) {

	   		int t = scan.nextInt();
			int x = scan.nextInt();
			int y = scan.nextInt();
			int point = x+y;

			map.put(t,point);

	       }

    	int flagk =0;
    	int flagv =0;

    	int count =0;


	    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {

	       // System.out.println(entry.getKey() + " : " + entry.getValue());
	    	int key = entry.getKey().intValue();
	    	int val = entry.getValue().intValue();

	    	//System.out.println("process: key" + key + "val" + val);


	    	if ( (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) ) {
	    		flagk = key;
	    		flagv = val;
	    	}
	    	else {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	}

	    	++count;
	    	if (count ==N) {
	    		System.out.println("Yes");
	    	}

	    }

	}
} Main

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;



public class Main{

	public static void main(String[] args){


		Scanner scan = new Scanner(System.in);

		int N = scan.nextInt();
		scan.nextLine();

		Map<Integer, Integer> map = new LinkedHashMap<>(N);

        for(int i=0; i<N; i++) {

	   		int t = scan.nextInt();
			int x = scan.nextInt();
			int y = scan.nextInt();
			int point = x+y;

			map.put(t,point);

	       }

    	int flagk =0;
    	int flagv =0;

    	int count =0;


	    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {

	       // System.out.println(entry.getKey() + " : " + entry.getValue());
	    	int key = entry.getKey().intValue();
	    	int val = entry.getValue().intValue();

	    	//System.out.println("process: key" + key + "val" + val);


	    	if ( (key>=val) && (key%2==val%2) && ( Math.abs(key-flagk) >=Math.abs(val-flagv) ) ) {
	    		flagk = key;
	    		flagv = val;
	    	}
	    	else {
	    		System.out.println("No");
	    		//System.out.println("key" + (key-flagk) + "val" + Math.abs(val-flagv));
	    		//System.out.println("key" + key + "val" + val);
	    		break;
	    	}

	    	++count;
	    	if (count ==N) {
	    		System.out.println("Yes");
	    	}

	    }

	}
}

