import java.util.*;
public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    int t[] = new int[N];
    int x[] = new int[N];
    int y[] = new int[N];
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N;i++){
      t[i]=sc.nextInt();
      x[i]=sc.nextInt();
      y[i]=sc.nextInt();
    }
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N-1;i++){
      if(!isVisit(i,t,x,y)){
        System.out.println("No");
        return;
      }
    }
    System.out.println("Yes");
  }
  
  public static boolean isVisit(int i,int[] t,int[] x,int[] y){
    int time =t[i+1]-t[i];
    int xs=Math.abs(x[i+1]-x[i]);
    int ys=Math.abs(y[i+1]-y[i]);
    if(xs+ys>time){
      return false;
    }else if(xs+ys==time){
      return true;
    }else{
      if((xs+ys)%2==time%2){
        return true;
      }
    }
    return false;
  }
    
    
  

  
} import java.util.*; util.* java public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    int t[] = new int[N];
    int x[] = new int[N];
    int y[] = new int[N];
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N;i++){
      t[i]=sc.nextInt();
      x[i]=sc.nextInt();
      y[i]=sc.nextInt();
    }
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N-1;i++){
      if(!isVisit(i,t,x,y)){
        System.out.println("No");
        return;
      }
    }
    System.out.println("Yes");
  }
  
  public static boolean isVisit(int i,int[] t,int[] x,int[] y){
    int time =t[i+1]-t[i];
    int xs=Math.abs(x[i+1]-x[i]);
    int ys=Math.abs(y[i+1]-y[i]);
    if(xs+ys>time){
      return false;
    }else if(xs+ys==time){
      return true;
    }else{
      if((xs+ys)%2==time%2){
        return true;
      }
    }
    return false;
  }
    
    
  

  
} Main public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    int t[] = new int[N];
    int x[] = new int[N];
    int y[] = new int[N];
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N;i++){
      t[i]=sc.nextInt();
      x[i]=sc.nextInt();
      y[i]=sc.nextInt();
    }
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N-1;i++){
      if(!isVisit(i,t,x,y)){
        System.out.println("No");
        return;
      }
    }
    System.out.println("Yes");
  } main {
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    int t[] = new int[N];
    int x[] = new int[N];
    int y[] = new int[N];
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N;i++){
      t[i]=sc.nextInt();
      x[i]=sc.nextInt();
      y[i]=sc.nextInt();
    }
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N-1;i++){
      if(!isVisit(i,t,x,y)){
        System.out.println("No");
        return;
      }
    }
    System.out.println("Yes");
  } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc int t[] = new int[N]; t new int[N] N int x[] = new int[N]; x new int[N] N int y[] = new int[N]; y new int[N] N if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    } N==1 N 1 {
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    } if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      } x[0]+y[0]!=t[0] x[0]+y[0] x[0] x 0 y[0] y 0 t[0] t 0 {
        System.out.println("No");
        return;
      } System.out.println("No") System.out.println System.out System System.out "No" return; for(int i=0;i<N;i++){
      t[i]=sc.nextInt();
      x[i]=sc.nextInt();
      y[i]=sc.nextInt();
    } int i=0; int i=0; i 0 i<N i N i++ i++ i {
      t[i]=sc.nextInt();
      x[i]=sc.nextInt();
      y[i]=sc.nextInt();
    } {
      t[i]=sc.nextInt();
      x[i]=sc.nextInt();
      y[i]=sc.nextInt();
    } t[i]=sc.nextInt() t[i] t i sc.nextInt() sc.nextInt sc x[i]=sc.nextInt() x[i] x i sc.nextInt() sc.nextInt sc y[i]=sc.nextInt() y[i] y i sc.nextInt() sc.nextInt sc if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    } N==1 N 1 {
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    } if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      } x[0]+y[0]!=t[0] x[0]+y[0] x[0] x 0 y[0] y 0 t[0] t 0 {
        System.out.println("No");
        return;
      } System.out.println("No") System.out.println System.out System System.out "No" return; for(int i=0;i<N-1;i++){
      if(!isVisit(i,t,x,y)){
        System.out.println("No");
        return;
      }
    } int i=0; int i=0; i 0 i<N-1 i N-1 N 1 i++ i++ i {
      if(!isVisit(i,t,x,y)){
        System.out.println("No");
        return;
      }
    } {
      if(!isVisit(i,t,x,y)){
        System.out.println("No");
        return;
      }
    } if(!isVisit(i,t,x,y)){
        System.out.println("No");
        return;
      } !isVisit(i,t,x,y) isVisit(i,t,x,y) isVisit i t x y {
        System.out.println("No");
        return;
      } System.out.println("No") System.out.println System.out System System.out "No" return; System.out.println("Yes") System.out.println System.out System System.out "Yes" String[] args args public static boolean isVisit(int i,int[] t,int[] x,int[] y){
    int time =t[i+1]-t[i];
    int xs=Math.abs(x[i+1]-x[i]);
    int ys=Math.abs(y[i+1]-y[i]);
    if(xs+ys>time){
      return false;
    }else if(xs+ys==time){
      return true;
    }else{
      if((xs+ys)%2==time%2){
        return true;
      }
    }
    return false;
  } isVisit {
    int time =t[i+1]-t[i];
    int xs=Math.abs(x[i+1]-x[i]);
    int ys=Math.abs(y[i+1]-y[i]);
    if(xs+ys>time){
      return false;
    }else if(xs+ys==time){
      return true;
    }else{
      if((xs+ys)%2==time%2){
        return true;
      }
    }
    return false;
  } int time =t[i+1]-t[i]; time t[i+1]-t[i] t[i+1] t i+1 i 1 t[i] t i int xs=Math.abs(x[i+1]-x[i]); xs Math.abs(x[i+1]-x[i]) Math.abs Math x[i+1]-x[i] x[i+1] x i+1 i 1 x[i] x i int ys=Math.abs(y[i+1]-y[i]); ys Math.abs(y[i+1]-y[i]) Math.abs Math y[i+1]-y[i] y[i+1] y i+1 i 1 y[i] y i if(xs+ys>time){
      return false;
    }else if(xs+ys==time){
      return true;
    }else{
      if((xs+ys)%2==time%2){
        return true;
      }
    } xs+ys>time xs+ys xs ys time {
      return false;
    } return false; false if(xs+ys==time){
      return true;
    }else{
      if((xs+ys)%2==time%2){
        return true;
      }
    } xs+ys==time xs+ys xs ys time {
      return true;
    } return true; true {
      if((xs+ys)%2==time%2){
        return true;
      }
    } if((xs+ys)%2==time%2){
        return true;
      } (xs+ys)%2==time%2 (xs+ys)%2 (xs+ys) xs ys 2 time%2 time 2 {
        return true;
      } return true; true return false; false int i i int[] t t int[] x x int[] y y public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    int t[] = new int[N];
    int x[] = new int[N];
    int y[] = new int[N];
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N;i++){
      t[i]=sc.nextInt();
      x[i]=sc.nextInt();
      y[i]=sc.nextInt();
    }
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N-1;i++){
      if(!isVisit(i,t,x,y)){
        System.out.println("No");
        return;
      }
    }
    System.out.println("Yes");
  }
  
  public static boolean isVisit(int i,int[] t,int[] x,int[] y){
    int time =t[i+1]-t[i];
    int xs=Math.abs(x[i+1]-x[i]);
    int ys=Math.abs(y[i+1]-y[i]);
    if(xs+ys>time){
      return false;
    }else if(xs+ys==time){
      return true;
    }else{
      if((xs+ys)%2==time%2){
        return true;
      }
    }
    return false;
  }
    
    
  

  
} public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    int t[] = new int[N];
    int x[] = new int[N];
    int y[] = new int[N];
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N;i++){
      t[i]=sc.nextInt();
      x[i]=sc.nextInt();
      y[i]=sc.nextInt();
    }
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N-1;i++){
      if(!isVisit(i,t,x,y)){
        System.out.println("No");
        return;
      }
    }
    System.out.println("Yes");
  }
  
  public static boolean isVisit(int i,int[] t,int[] x,int[] y){
    int time =t[i+1]-t[i];
    int xs=Math.abs(x[i+1]-x[i]);
    int ys=Math.abs(y[i+1]-y[i]);
    if(xs+ys>time){
      return false;
    }else if(xs+ys==time){
      return true;
    }else{
      if((xs+ys)%2==time%2){
        return true;
      }
    }
    return false;
  }
    
    
  

  
} Main
import java.util.*;
public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    int t[] = new int[N];
    int x[] = new int[N];
    int y[] = new int[N];
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N;i++){
      t[i]=sc.nextInt();
      x[i]=sc.nextInt();
      y[i]=sc.nextInt();
    }
    if(N==1){
      if(x[0]+y[0]!=t[0]){
        System.out.println("No");
        return;
      }
    }
    for(int i=0;i<N-1;i++){
      if(!isVisit(i,t,x,y)){
        System.out.println("No");
        return;
      }
    }
    System.out.println("Yes");
  }
  
  public static boolean isVisit(int i,int[] t,int[] x,int[] y){
    int time =t[i+1]-t[i];
    int xs=Math.abs(x[i+1]-x[i]);
    int ys=Math.abs(y[i+1]-y[i]);
    if(xs+ys>time){
      return false;
    }else if(xs+ys==time){
      return true;
    }else{
      if((xs+ys)%2==time%2){
        return true;
      }
    }
    return false;
  }
    
    
  

  
}
