import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int N=Integer.parseInt(sc.next());
        int[] t=new int[N+1];
        int[] x=new int[N+1];
        int[] y=new int[N+1];
        boolean flag=true;
        for(int i=1;i<= N;i++){
            t[i]=Integer.parseInt(sc.next());
            x[i]=Integer.parseInt(sc.next());
            y[i]=Integer.parseInt(sc.next());
            int dt=t[i]-t[i-1];
            int dist=Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
            if (dt<dist || ((dist-dt)%2!=0)){
                flag=false;
                break;
            }
        }
        System.out.println(flag ? "Yes" : "No");
    }
} import java.util.*; util.* java public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int N=Integer.parseInt(sc.next());
        int[] t=new int[N+1];
        int[] x=new int[N+1];
        int[] y=new int[N+1];
        boolean flag=true;
        for(int i=1;i<= N;i++){
            t[i]=Integer.parseInt(sc.next());
            x[i]=Integer.parseInt(sc.next());
            y[i]=Integer.parseInt(sc.next());
            int dt=t[i]-t[i-1];
            int dist=Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
            if (dt<dist || ((dist-dt)%2!=0)){
                flag=false;
                break;
            }
        }
        System.out.println(flag ? "Yes" : "No");
    }
} Main public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int N=Integer.parseInt(sc.next());
        int[] t=new int[N+1];
        int[] x=new int[N+1];
        int[] y=new int[N+1];
        boolean flag=true;
        for(int i=1;i<= N;i++){
            t[i]=Integer.parseInt(sc.next());
            x[i]=Integer.parseInt(sc.next());
            y[i]=Integer.parseInt(sc.next());
            int dt=t[i]-t[i-1];
            int dist=Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
            if (dt<dist || ((dist-dt)%2!=0)){
                flag=false;
                break;
            }
        }
        System.out.println(flag ? "Yes" : "No");
    } main {
        Scanner sc=new Scanner(System.in);
        int N=Integer.parseInt(sc.next());
        int[] t=new int[N+1];
        int[] x=new int[N+1];
        int[] y=new int[N+1];
        boolean flag=true;
        for(int i=1;i<= N;i++){
            t[i]=Integer.parseInt(sc.next());
            x[i]=Integer.parseInt(sc.next());
            y[i]=Integer.parseInt(sc.next());
            int dt=t[i]-t[i-1];
            int dist=Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
            if (dt<dist || ((dist-dt)%2!=0)){
                flag=false;
                break;
            }
        }
        System.out.println(flag ? "Yes" : "No");
    } Scanner sc=new Scanner(System.in); sc new Scanner(System.in) int N=Integer.parseInt(sc.next()); N Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc int[] t=new int[N+1]; t new int[N+1] N+1 N 1 int[] x=new int[N+1]; x new int[N+1] N+1 N 1 int[] y=new int[N+1]; y new int[N+1] N+1 N 1 boolean flag=true; flag true for(int i=1;i<= N;i++){
            t[i]=Integer.parseInt(sc.next());
            x[i]=Integer.parseInt(sc.next());
            y[i]=Integer.parseInt(sc.next());
            int dt=t[i]-t[i-1];
            int dist=Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
            if (dt<dist || ((dist-dt)%2!=0)){
                flag=false;
                break;
            }
        } int i=1; int i=1; i 1 i<= N i N i++ i++ i {
            t[i]=Integer.parseInt(sc.next());
            x[i]=Integer.parseInt(sc.next());
            y[i]=Integer.parseInt(sc.next());
            int dt=t[i]-t[i-1];
            int dist=Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
            if (dt<dist || ((dist-dt)%2!=0)){
                flag=false;
                break;
            }
        } {
            t[i]=Integer.parseInt(sc.next());
            x[i]=Integer.parseInt(sc.next());
            y[i]=Integer.parseInt(sc.next());
            int dt=t[i]-t[i-1];
            int dist=Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
            if (dt<dist || ((dist-dt)%2!=0)){
                flag=false;
                break;
            }
        } t[i]=Integer.parseInt(sc.next()) t[i] t i Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc x[i]=Integer.parseInt(sc.next()) x[i] x i Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc y[i]=Integer.parseInt(sc.next()) y[i] y i Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc int dt=t[i]-t[i-1]; dt t[i]-t[i-1] t[i] t i t[i-1] t i-1 i 1 int dist=Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]); dist Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]) Math.abs(x[i]-x[i-1]) Math.abs Math x[i]-x[i-1] x[i] x i x[i-1] x i-1 i 1 Math.abs(y[i]-y[i-1]) Math.abs Math y[i]-y[i-1] y[i] y i y[i-1] y i-1 i 1 if (dt<dist || ((dist-dt)%2!=0)){
                flag=false;
                break;
            } dt<dist || ((dist-dt)%2!=0) dt<dist dt dist ((dist-dt)%2!=0) (dist-dt)%2 (dist-dt) dist dt 2 0 {
                flag=false;
                break;
            } flag=false flag false break; System.out.println(flag ? "Yes" : "No") System.out.println System.out System System.out flag ? "Yes" : "No" flag "Yes" "No" String[] args args public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int N=Integer.parseInt(sc.next());
        int[] t=new int[N+1];
        int[] x=new int[N+1];
        int[] y=new int[N+1];
        boolean flag=true;
        for(int i=1;i<= N;i++){
            t[i]=Integer.parseInt(sc.next());
            x[i]=Integer.parseInt(sc.next());
            y[i]=Integer.parseInt(sc.next());
            int dt=t[i]-t[i-1];
            int dist=Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
            if (dt<dist || ((dist-dt)%2!=0)){
                flag=false;
                break;
            }
        }
        System.out.println(flag ? "Yes" : "No");
    }
} public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int N=Integer.parseInt(sc.next());
        int[] t=new int[N+1];
        int[] x=new int[N+1];
        int[] y=new int[N+1];
        boolean flag=true;
        for(int i=1;i<= N;i++){
            t[i]=Integer.parseInt(sc.next());
            x[i]=Integer.parseInt(sc.next());
            y[i]=Integer.parseInt(sc.next());
            int dt=t[i]-t[i-1];
            int dist=Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
            if (dt<dist || ((dist-dt)%2!=0)){
                flag=false;
                break;
            }
        }
        System.out.println(flag ? "Yes" : "No");
    }
} Main
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int N=Integer.parseInt(sc.next());
        int[] t=new int[N+1];
        int[] x=new int[N+1];
        int[] y=new int[N+1];
        boolean flag=true;
        for(int i=1;i<= N;i++){
            t[i]=Integer.parseInt(sc.next());
            x[i]=Integer.parseInt(sc.next());
            y[i]=Integer.parseInt(sc.next());
            int dt=t[i]-t[i-1];
            int dist=Math.abs(x[i]-x[i-1])+Math.abs(y[i]-y[i-1]);
            if (dt<dist || ((dist-dt)%2!=0)){
                flag=false;
                break;
            }
        }
        System.out.println(flag ? "Yes" : "No");
    }
}