import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args) throws IOException{
        Reader r = new Reader();
        int N = r.i();
        int t = 0;
        int x = 0;
        int y = 0;
        boolean flag = true;
        for(int i = 0; i < N; i++){
            int[] a = r.ii();
            int cost = Math.abs(x-a[1])+Math.abs(y-a[2]);
            int rest = a[0]-t-cost;
            if(rest < 0 || rest%2 > 0){
                flag = false;
                break;
            }
            t = a[0];
            x = a[1];
            y = a[2];
        }
        println(flag ? "Yes" : "No");
    }
    static void print(Object o){
        System.out.print(o.toString());
    }
    static void println(Object o){
        print(o+"\n");
    }
    static int Int(String s){
        return Integer.parseInt(s);
    }
    static class Reader extends BufferedReader{
        Reader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Int(ss[j]);
            return ii;
        }
    }
} import java.io.*; io.* java import java.util.*; util.* java public class Main{
    public static void main(String[] args) throws IOException{
        Reader r = new Reader();
        int N = r.i();
        int t = 0;
        int x = 0;
        int y = 0;
        boolean flag = true;
        for(int i = 0; i < N; i++){
            int[] a = r.ii();
            int cost = Math.abs(x-a[1])+Math.abs(y-a[2]);
            int rest = a[0]-t-cost;
            if(rest < 0 || rest%2 > 0){
                flag = false;
                break;
            }
            t = a[0];
            x = a[1];
            y = a[2];
        }
        println(flag ? "Yes" : "No");
    }
    static void print(Object o){
        System.out.print(o.toString());
    }
    static void println(Object o){
        print(o+"\n");
    }
    static int Int(String s){
        return Integer.parseInt(s);
    }
    static class Reader extends BufferedReader{
        Reader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Int(ss[j]);
            return ii;
        }
    }
} Main public static void main(String[] args) throws IOException{
        Reader r = new Reader();
        int N = r.i();
        int t = 0;
        int x = 0;
        int y = 0;
        boolean flag = true;
        for(int i = 0; i < N; i++){
            int[] a = r.ii();
            int cost = Math.abs(x-a[1])+Math.abs(y-a[2]);
            int rest = a[0]-t-cost;
            if(rest < 0 || rest%2 > 0){
                flag = false;
                break;
            }
            t = a[0];
            x = a[1];
            y = a[2];
        }
        println(flag ? "Yes" : "No");
    } main {
        Reader r = new Reader();
        int N = r.i();
        int t = 0;
        int x = 0;
        int y = 0;
        boolean flag = true;
        for(int i = 0; i < N; i++){
            int[] a = r.ii();
            int cost = Math.abs(x-a[1])+Math.abs(y-a[2]);
            int rest = a[0]-t-cost;
            if(rest < 0 || rest%2 > 0){
                flag = false;
                break;
            }
            t = a[0];
            x = a[1];
            y = a[2];
        }
        println(flag ? "Yes" : "No");
    } Reader r = new Reader(); r new Reader() int N = r.i(); N r.i() r.i r int t = 0; t 0 int x = 0; x 0 int y = 0; y 0 boolean flag = true; flag true for(int i = 0; i < N; i++){
            int[] a = r.ii();
            int cost = Math.abs(x-a[1])+Math.abs(y-a[2]);
            int rest = a[0]-t-cost;
            if(rest < 0 || rest%2 > 0){
                flag = false;
                break;
            }
            t = a[0];
            x = a[1];
            y = a[2];
        } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
            int[] a = r.ii();
            int cost = Math.abs(x-a[1])+Math.abs(y-a[2]);
            int rest = a[0]-t-cost;
            if(rest < 0 || rest%2 > 0){
                flag = false;
                break;
            }
            t = a[0];
            x = a[1];
            y = a[2];
        } {
            int[] a = r.ii();
            int cost = Math.abs(x-a[1])+Math.abs(y-a[2]);
            int rest = a[0]-t-cost;
            if(rest < 0 || rest%2 > 0){
                flag = false;
                break;
            }
            t = a[0];
            x = a[1];
            y = a[2];
        } int[] a = r.ii(); a r.ii() r.ii r int cost = Math.abs(x-a[1])+Math.abs(y-a[2]); cost Math.abs(x-a[1])+Math.abs(y-a[2]) Math.abs(x-a[1]) Math.abs Math x-a[1] x a[1] a 1 Math.abs(y-a[2]) Math.abs Math y-a[2] y a[2] a 2 int rest = a[0]-t-cost; rest a[0]-t-cost a[0]-t-cost a[0] a 0 t cost if(rest < 0 || rest%2 > 0){
                flag = false;
                break;
            } rest < 0 || rest%2 > 0 rest < 0 rest 0 rest%2 > 0 rest%2 rest 2 0 {
                flag = false;
                break;
            } flag = false flag false break; t = a[0] t a[0] a 0 x = a[1] x a[1] a 1 y = a[2] y a[2] a 2 println(flag ? "Yes" : "No") println flag ? "Yes" : "No" flag "Yes" "No" String[] args args static void print(Object o){
        System.out.print(o.toString());
    } print {
        System.out.print(o.toString());
    } System.out.print(o.toString()) System.out.print System.out System System.out o.toString() o.toString o Object o o static void println(Object o){
        print(o+"\n");
    } println {
        print(o+"\n");
    } print(o+"\n") print o+"\n" o "\n" Object o o static int Int(String s){
        return Integer.parseInt(s);
    } Int {
        return Integer.parseInt(s);
    } return Integer.parseInt(s); Integer.parseInt(s) Integer.parseInt Integer s String s s static class Reader extends BufferedReader{
        Reader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Int(ss[j]);
            return ii;
        }
    } Reader Reader(){
            super(new InputStreamReader(System.in));
        } Reader {
            super(new InputStreamReader(System.in));
        } super(new InputStreamReader(System.in)) super new InputStreamReader(System.in) String s() throws IOException{
            return readLine();
        } s {
            return readLine();
        } return readLine(); readLine() readLine String[] ss() throws IOException{
            return s().split(" ");
        } ss {
            return s().split(" ");
        } return s().split(" "); s().split(" ") s().split s() s " " int i() throws IOException{
            return Int(s());
        } i {
            return Int(s());
        } return Int(s()); Int(s()) Int s() s int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Int(ss[j]);
            return ii;
        } ii {
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Int(ss[j]);
            return ii;
        } String[] ss = ss(); ss ss() ss int size = ss.length; size ss.length ss ss.length int[] ii = new int[size]; ii new int[size] size for(int j = 0; j < size; j++) ii[j] = Int(ss[j]); int j = 0; int j = 0; j 0 j < size j size j++ j++ j ii[j] = Int(ss[j]); ii[j] = Int(ss[j]) ii[j] ii j Int(ss[j]) Int ss[j] ss j return ii; ii BufferedReader public class Main{
    public static void main(String[] args) throws IOException{
        Reader r = new Reader();
        int N = r.i();
        int t = 0;
        int x = 0;
        int y = 0;
        boolean flag = true;
        for(int i = 0; i < N; i++){
            int[] a = r.ii();
            int cost = Math.abs(x-a[1])+Math.abs(y-a[2]);
            int rest = a[0]-t-cost;
            if(rest < 0 || rest%2 > 0){
                flag = false;
                break;
            }
            t = a[0];
            x = a[1];
            y = a[2];
        }
        println(flag ? "Yes" : "No");
    }
    static void print(Object o){
        System.out.print(o.toString());
    }
    static void println(Object o){
        print(o+"\n");
    }
    static int Int(String s){
        return Integer.parseInt(s);
    }
    static class Reader extends BufferedReader{
        Reader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Int(ss[j]);
            return ii;
        }
    }
} public class Main{
    public static void main(String[] args) throws IOException{
        Reader r = new Reader();
        int N = r.i();
        int t = 0;
        int x = 0;
        int y = 0;
        boolean flag = true;
        for(int i = 0; i < N; i++){
            int[] a = r.ii();
            int cost = Math.abs(x-a[1])+Math.abs(y-a[2]);
            int rest = a[0]-t-cost;
            if(rest < 0 || rest%2 > 0){
                flag = false;
                break;
            }
            t = a[0];
            x = a[1];
            y = a[2];
        }
        println(flag ? "Yes" : "No");
    }
    static void print(Object o){
        System.out.print(o.toString());
    }
    static void println(Object o){
        print(o+"\n");
    }
    static int Int(String s){
        return Integer.parseInt(s);
    }
    static class Reader extends BufferedReader{
        Reader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Int(ss[j]);
            return ii;
        }
    }
} Main
import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args) throws IOException{
        Reader r = new Reader();
        int N = r.i();
        int t = 0;
        int x = 0;
        int y = 0;
        boolean flag = true;
        for(int i = 0; i < N; i++){
            int[] a = r.ii();
            int cost = Math.abs(x-a[1])+Math.abs(y-a[2]);
            int rest = a[0]-t-cost;
            if(rest < 0 || rest%2 > 0){
                flag = false;
                break;
            }
            t = a[0];
            x = a[1];
            y = a[2];
        }
        println(flag ? "Yes" : "No");
    }
    static void print(Object o){
        System.out.print(o.toString());
    }
    static void println(Object o){
        print(o+"\n");
    }
    static int Int(String s){
        return Integer.parseInt(s);
    }
    static class Reader extends BufferedReader{
        Reader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Int(ss[j]);
            return ii;
        }
    }
}
