import java.io.*;
import java.util.Arrays;

public class Main {
  // final String testCase = "[[\"2\\n3 1 2\\n6 1 1\",\"Yes\"],[\"1\\n2 100 100\",\"No\"],[\"2\\n5 1 1\\n100 1 1\",\"No\"]]";
  public static void main(String[] args) {
    new Main().run();
  }

  public void run() {
    try(BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out)) {
      
      int n = Integer.parseInt(in.readLine());
      int[][] table = new int[n][3];
      
      String[] lines;
      for(int i=0; i<n; i++) {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      }

      final int t = 0;
      final int x = 1;
      final int y = 2;
      int ct,cx,cy; ct = cx = cy = 0;
      boolean isPossible = true;
      for(int i=0; i<n; i++) {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      }

      String ans = isPossible ? "Yes" : "No";
      System.out.println(ans);
    }
    catch(IOException e) {
      System.err.println(e);
    }
  }
} import java.io.*; io.* java import java.util.Arrays; Arrays java.util public class Main {
  // final String testCase = "[[\"2\\n3 1 2\\n6 1 1\",\"Yes\"],[\"1\\n2 100 100\",\"No\"],[\"2\\n5 1 1\\n100 1 1\",\"No\"]]";
  public static void main(String[] args) {
    new Main().run();
  }

  public void run() {
    try(BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out)) {
      
      int n = Integer.parseInt(in.readLine());
      int[][] table = new int[n][3];
      
      String[] lines;
      for(int i=0; i<n; i++) {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      }

      final int t = 0;
      final int x = 1;
      final int y = 2;
      int ct,cx,cy; ct = cx = cy = 0;
      boolean isPossible = true;
      for(int i=0; i<n; i++) {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      }

      String ans = isPossible ? "Yes" : "No";
      System.out.println(ans);
    }
    catch(IOException e) {
      System.err.println(e);
    }
  }
} Main // final String testCase = "[[\"2\\n3 1 2\\n6 1 1\",\"Yes\"],[\"1\\n2 100 100\",\"No\"],[\"2\\n5 1 1\\n100 1 1\",\"No\"]]";
  public static void main(String[] args) {
    new Main().run();
  } main {
    new Main().run();
  } new Main().run() new Main().run new Main() String[] args args public void run() {
    try(BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out)) {
      
      int n = Integer.parseInt(in.readLine());
      int[][] table = new int[n][3];
      
      String[] lines;
      for(int i=0; i<n; i++) {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      }

      final int t = 0;
      final int x = 1;
      final int y = 2;
      int ct,cx,cy; ct = cx = cy = 0;
      boolean isPossible = true;
      for(int i=0; i<n; i++) {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      }

      String ans = isPossible ? "Yes" : "No";
      System.out.println(ans);
    }
    catch(IOException e) {
      System.err.println(e);
    }
  } run {
    try(BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out)) {
      
      int n = Integer.parseInt(in.readLine());
      int[][] table = new int[n][3];
      
      String[] lines;
      for(int i=0; i<n; i++) {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      }

      final int t = 0;
      final int x = 1;
      final int y = 2;
      int ct,cx,cy; ct = cx = cy = 0;
      boolean isPossible = true;
      for(int i=0; i<n; i++) {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      }

      String ans = isPossible ? "Yes" : "No";
      System.out.println(ans);
    }
    catch(IOException e) {
      System.err.println(e);
    }
  } try(BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out)) {
      
      int n = Integer.parseInt(in.readLine());
      int[][] table = new int[n][3];
      
      String[] lines;
      for(int i=0; i<n; i++) {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      }

      final int t = 0;
      final int x = 1;
      final int y = 2;
      int ct,cx,cy; ct = cx = cy = 0;
      boolean isPossible = true;
      for(int i=0; i<n; i++) {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      }

      String ans = isPossible ? "Yes" : "No";
      System.out.println(ans);
    }
    catch(IOException e) {
      System.err.println(e);
    } catch(IOException e) {
      System.err.println(e);
    } IOException e {
      System.err.println(e);
    } System.err.println(e) System.err.println System.err System System.err e {
      
      int n = Integer.parseInt(in.readLine());
      int[][] table = new int[n][3];
      
      String[] lines;
      for(int i=0; i<n; i++) {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      }

      final int t = 0;
      final int x = 1;
      final int y = 2;
      int ct,cx,cy; ct = cx = cy = 0;
      boolean isPossible = true;
      for(int i=0; i<n; i++) {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      }

      String ans = isPossible ? "Yes" : "No";
      System.out.println(ans);
    } BufferedReader in = new BufferedReader(new InputStreamReader(System.in)) BufferedReader in = new BufferedReader(new InputStreamReader(System.in)) new BufferedReader(new InputStreamReader(System.in)) PrintWriter out = new PrintWriter(System.out) PrintWriter out = new PrintWriter(System.out) new PrintWriter(System.out) int n = Integer.parseInt(in.readLine()); n Integer.parseInt(in.readLine()) Integer.parseInt Integer in.readLine() in.readLine in int[][] table = new int[n][3]; table new int[n][3] n 3 String[] lines; lines for(int i=0; i<n; i++) {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      } int i=0; int i=0; i 0 i<n i n i++ i++ i {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      } {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      } lines = in.readLine().split(" ") lines in.readLine().split(" ") in.readLine().split in.readLine() in.readLine in " " for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]); int j=0; int j=0; j 0 j<3 j 3 j++ j++ j table[i][j] = Integer.parseInt(lines[j]); table[i][j] = Integer.parseInt(lines[j]) table[i][j] table[i] table i j Integer.parseInt(lines[j]) Integer.parseInt Integer lines[j] lines j final int t = 0; t 0 final int x = 1; x 1 final int y = 2; y 2 int ct ct cx cx cy; cy ct = cx = cy = 0 ct cx = cy = 0 cx cy = 0 cy 0 boolean isPossible = true; isPossible true for(int i=0; i<n; i++) {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      } int i=0; int i=0; i 0 i<n i n i++ i++ i {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      } {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      } int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy); d Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy) Math.abs(table[i][x] - cx) Math.abs Math table[i][x] - cx table[i][x] table[i] table i x cx Math.abs(table[i][y] - cy) Math.abs Math table[i][y] - cy table[i][y] table[i] table i y cy int time = table[i][t] - ct; time table[i][t] - ct table[i][t] table[i] table i t ct if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        } time < d || (time-d) % 2 != 0 time < d time d (time-d) % 2 != 0 (time-d) % 2 (time-d) time d 2 0 {
          isPossible = false;
          break;
        } isPossible = false isPossible false break; String ans = isPossible ? "Yes" : "No"; ans isPossible ? "Yes" : "No" isPossible "Yes" "No" System.out.println(ans) System.out.println System.out System System.out ans public class Main {
  // final String testCase = "[[\"2\\n3 1 2\\n6 1 1\",\"Yes\"],[\"1\\n2 100 100\",\"No\"],[\"2\\n5 1 1\\n100 1 1\",\"No\"]]";
  public static void main(String[] args) {
    new Main().run();
  }

  public void run() {
    try(BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out)) {
      
      int n = Integer.parseInt(in.readLine());
      int[][] table = new int[n][3];
      
      String[] lines;
      for(int i=0; i<n; i++) {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      }

      final int t = 0;
      final int x = 1;
      final int y = 2;
      int ct,cx,cy; ct = cx = cy = 0;
      boolean isPossible = true;
      for(int i=0; i<n; i++) {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      }

      String ans = isPossible ? "Yes" : "No";
      System.out.println(ans);
    }
    catch(IOException e) {
      System.err.println(e);
    }
  }
} public class Main {
  // final String testCase = "[[\"2\\n3 1 2\\n6 1 1\",\"Yes\"],[\"1\\n2 100 100\",\"No\"],[\"2\\n5 1 1\\n100 1 1\",\"No\"]]";
  public static void main(String[] args) {
    new Main().run();
  }

  public void run() {
    try(BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out)) {
      
      int n = Integer.parseInt(in.readLine());
      int[][] table = new int[n][3];
      
      String[] lines;
      for(int i=0; i<n; i++) {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      }

      final int t = 0;
      final int x = 1;
      final int y = 2;
      int ct,cx,cy; ct = cx = cy = 0;
      boolean isPossible = true;
      for(int i=0; i<n; i++) {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      }

      String ans = isPossible ? "Yes" : "No";
      System.out.println(ans);
    }
    catch(IOException e) {
      System.err.println(e);
    }
  }
} Main
import java.io.*;
import java.util.Arrays;

public class Main {
  // final String testCase = "[[\"2\\n3 1 2\\n6 1 1\",\"Yes\"],[\"1\\n2 100 100\",\"No\"],[\"2\\n5 1 1\\n100 1 1\",\"No\"]]";
  public static void main(String[] args) {
    new Main().run();
  }

  public void run() {
    try(BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out)) {
      
      int n = Integer.parseInt(in.readLine());
      int[][] table = new int[n][3];
      
      String[] lines;
      for(int i=0; i<n; i++) {
        lines = in.readLine().split(" ");
        for(int j=0; j<3; j++)
          table[i][j] = Integer.parseInt(lines[j]);
      }

      final int t = 0;
      final int x = 1;
      final int y = 2;
      int ct,cx,cy; ct = cx = cy = 0;
      boolean isPossible = true;
      for(int i=0; i<n; i++) {
        int d = Math.abs(table[i][x] - cx) + Math.abs(table[i][y] - cy);
        int time = table[i][t] - ct;
        if(time < d || (time-d) % 2 != 0) {
          isPossible = false;
          break;
        }
      }

      String ans = isPossible ? "Yes" : "No";
      System.out.println(ans);
    }
    catch(IOException e) {
      System.err.println(e);
    }
  }
}