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[] time = new int[n+1];
    int[] x = new int[n+1];
    int[] y = new int[n+1];
    time[0] = 0;
    x[0] = 0;
    y[0] = 0;
    for(int i = 1; i <= n; i++) {
      time[i] = Integer.parseInt(sc.next());
      x[i] = Integer.parseInt(sc.next());
      y[i] = Integer.parseInt(sc.next());
    }
    int dis, dtime;
    boolean flag = true;
    for(int i = 1; i <= n; i++) {
      dis = Math.abs(x[i] - x[i-1]) + Math.abs(y[i] - y[i-1]);
      dtime = time[i] - time[i-1];
      if(!(dis <= dtime && dis % 2 == dtime % 2)) flag = false;
      if(!flag) 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[] time = new int[n+1];
    int[] x = new int[n+1];
    int[] y = new int[n+1];
    time[0] = 0;
    x[0] = 0;
    y[0] = 0;
    for(int i = 1; i <= n; i++) {
      time[i] = Integer.parseInt(sc.next());
      x[i] = Integer.parseInt(sc.next());
      y[i] = Integer.parseInt(sc.next());
    }
    int dis, dtime;
    boolean flag = true;
    for(int i = 1; i <= n; i++) {
      dis = Math.abs(x[i] - x[i-1]) + Math.abs(y[i] - y[i-1]);
      dtime = time[i] - time[i-1];
      if(!(dis <= dtime && dis % 2 == dtime % 2)) flag = false;
      if(!flag) 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[] time = new int[n+1];
    int[] x = new int[n+1];
    int[] y = new int[n+1];
    time[0] = 0;
    x[0] = 0;
    y[0] = 0;
    for(int i = 1; i <= n; i++) {
      time[i] = Integer.parseInt(sc.next());
      x[i] = Integer.parseInt(sc.next());
      y[i] = Integer.parseInt(sc.next());
    }
    int dis, dtime;
    boolean flag = true;
    for(int i = 1; i <= n; i++) {
      dis = Math.abs(x[i] - x[i-1]) + Math.abs(y[i] - y[i-1]);
      dtime = time[i] - time[i-1];
      if(!(dis <= dtime && dis % 2 == dtime % 2)) flag = false;
      if(!flag) break;
    }
    System.out.println((flag)? "Yes" : "No");
  } main {
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.next());
    int[] time = new int[n+1];
    int[] x = new int[n+1];
    int[] y = new int[n+1];
    time[0] = 0;
    x[0] = 0;
    y[0] = 0;
    for(int i = 1; i <= n; i++) {
      time[i] = Integer.parseInt(sc.next());
      x[i] = Integer.parseInt(sc.next());
      y[i] = Integer.parseInt(sc.next());
    }
    int dis, dtime;
    boolean flag = true;
    for(int i = 1; i <= n; i++) {
      dis = Math.abs(x[i] - x[i-1]) + Math.abs(y[i] - y[i-1]);
      dtime = time[i] - time[i-1];
      if(!(dis <= dtime && dis % 2 == dtime % 2)) flag = false;
      if(!flag) 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[] time = new int[n+1]; time 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 time[0] = 0 time[0] time 0 0 x[0] = 0 x[0] x 0 0 y[0] = 0 y[0] y 0 0 for(int i = 1; i <= n; i++) {
      time[i] = Integer.parseInt(sc.next());
      x[i] = Integer.parseInt(sc.next());
      y[i] = Integer.parseInt(sc.next());
    } int i = 1; int i = 1; i 1 i <= n i n i++ i++ i {
      time[i] = Integer.parseInt(sc.next());
      x[i] = Integer.parseInt(sc.next());
      y[i] = Integer.parseInt(sc.next());
    } {
      time[i] = Integer.parseInt(sc.next());
      x[i] = Integer.parseInt(sc.next());
      y[i] = Integer.parseInt(sc.next());
    } time[i] = Integer.parseInt(sc.next()) time[i] time 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 dis dis dtime; dtime boolean flag = true; flag true for(int i = 1; i <= n; i++) {
      dis = Math.abs(x[i] - x[i-1]) + Math.abs(y[i] - y[i-1]);
      dtime = time[i] - time[i-1];
      if(!(dis <= dtime && dis % 2 == dtime % 2)) flag = false;
      if(!flag) break;
    } int i = 1; int i = 1; i 1 i <= n i n i++ i++ i {
      dis = Math.abs(x[i] - x[i-1]) + Math.abs(y[i] - y[i-1]);
      dtime = time[i] - time[i-1];
      if(!(dis <= dtime && dis % 2 == dtime % 2)) flag = false;
      if(!flag) break;
    } {
      dis = Math.abs(x[i] - x[i-1]) + Math.abs(y[i] - y[i-1]);
      dtime = time[i] - time[i-1];
      if(!(dis <= dtime && dis % 2 == dtime % 2)) flag = false;
      if(!flag) break;
    } dis = Math.abs(x[i] - x[i-1]) + Math.abs(y[i] - y[i-1]) dis 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 dtime = time[i] - time[i-1] dtime time[i] - time[i-1] time[i] time i time[i-1] time i-1 i 1 if(!(dis <= dtime && dis % 2 == dtime % 2)) flag = false; !(dis <= dtime && dis % 2 == dtime % 2) (dis <= dtime && dis % 2 == dtime % 2) dis <= dtime dis dtime dis % 2 == dtime % 2 dis % 2 dis 2 dtime % 2 dtime 2 flag = false flag false if(!flag) break; !flag flag 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[] time = new int[n+1];
    int[] x = new int[n+1];
    int[] y = new int[n+1];
    time[0] = 0;
    x[0] = 0;
    y[0] = 0;
    for(int i = 1; i <= n; i++) {
      time[i] = Integer.parseInt(sc.next());
      x[i] = Integer.parseInt(sc.next());
      y[i] = Integer.parseInt(sc.next());
    }
    int dis, dtime;
    boolean flag = true;
    for(int i = 1; i <= n; i++) {
      dis = Math.abs(x[i] - x[i-1]) + Math.abs(y[i] - y[i-1]);
      dtime = time[i] - time[i-1];
      if(!(dis <= dtime && dis % 2 == dtime % 2)) flag = false;
      if(!flag) 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[] time = new int[n+1];
    int[] x = new int[n+1];
    int[] y = new int[n+1];
    time[0] = 0;
    x[0] = 0;
    y[0] = 0;
    for(int i = 1; i <= n; i++) {
      time[i] = Integer.parseInt(sc.next());
      x[i] = Integer.parseInt(sc.next());
      y[i] = Integer.parseInt(sc.next());
    }
    int dis, dtime;
    boolean flag = true;
    for(int i = 1; i <= n; i++) {
      dis = Math.abs(x[i] - x[i-1]) + Math.abs(y[i] - y[i-1]);
      dtime = time[i] - time[i-1];
      if(!(dis <= dtime && dis % 2 == dtime % 2)) flag = false;
      if(!flag) 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[] time = new int[n+1];
    int[] x = new int[n+1];
    int[] y = new int[n+1];
    time[0] = 0;
    x[0] = 0;
    y[0] = 0;
    for(int i = 1; i <= n; i++) {
      time[i] = Integer.parseInt(sc.next());
      x[i] = Integer.parseInt(sc.next());
      y[i] = Integer.parseInt(sc.next());
    }
    int dis, dtime;
    boolean flag = true;
    for(int i = 1; i <= n; i++) {
      dis = Math.abs(x[i] - x[i-1]) + Math.abs(y[i] - y[i-1]);
      dtime = time[i] - time[i-1];
      if(!(dis <= dtime && dis % 2 == dtime % 2)) flag = false;
      if(!flag) break;
    }
    System.out.println((flag)? "Yes" : "No");
  }
}
