import java.util.*;


public class Main {
    public static void main(String[] args) {
        // 自分の得意な言語で
        // Let's チャレンジ！！

        Scanner sc = new Scanner(System.in);
        boolean can = true;
        int positionCount = sc.nextInt();
        int time_p = 0;
        int x_p = 0;
        int y_p = 0;
        while (positionCount-- > 0) {
            int time_q = sc.nextInt();
            int x_q = sc.nextInt();
            int y_q = sc.nextInt();
            
            if (!canGo(time_p, x_p, y_p, time_q, x_q, y_q)) {
                can = false;
            }
            
            time_p = time_q;
            x_p = x_q;
            y_p = y_q;
        }
        
        if (can) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }
    
    public static boolean canGo(int time_p, int x_p, int y_p, int time_q, int x_q, int y_q) {
        int timeDifference = time_q - time_p;
        int length_x = Math.abs(x_q - x_p);
        int length_y = Math.abs(y_q - y_p);
        int moveLength = length_x + length_y;
        
        if (timeDifference < moveLength) return false;
        if (timeDifference == moveLength) return true;
        
        while (timeDifference != moveLength) {
            timeDifference -= 2;
            if (timeDifference < moveLength) return false;
            if (timeDifference == moveLength) return true;
        }
        
        return true;
    }
} import java.util.*; util.* java public class Main {
    public static void main(String[] args) {
        // 自分の得意な言語で
        // Let's チャレンジ！！

        Scanner sc = new Scanner(System.in);
        boolean can = true;
        int positionCount = sc.nextInt();
        int time_p = 0;
        int x_p = 0;
        int y_p = 0;
        while (positionCount-- > 0) {
            int time_q = sc.nextInt();
            int x_q = sc.nextInt();
            int y_q = sc.nextInt();
            
            if (!canGo(time_p, x_p, y_p, time_q, x_q, y_q)) {
                can = false;
            }
            
            time_p = time_q;
            x_p = x_q;
            y_p = y_q;
        }
        
        if (can) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }
    
    public static boolean canGo(int time_p, int x_p, int y_p, int time_q, int x_q, int y_q) {
        int timeDifference = time_q - time_p;
        int length_x = Math.abs(x_q - x_p);
        int length_y = Math.abs(y_q - y_p);
        int moveLength = length_x + length_y;
        
        if (timeDifference < moveLength) return false;
        if (timeDifference == moveLength) return true;
        
        while (timeDifference != moveLength) {
            timeDifference -= 2;
            if (timeDifference < moveLength) return false;
            if (timeDifference == moveLength) return true;
        }
        
        return true;
    }
} Main public static void main(String[] args) {
        // 自分の得意な言語で
        // Let's チャレンジ！！

        Scanner sc = new Scanner(System.in);
        boolean can = true;
        int positionCount = sc.nextInt();
        int time_p = 0;
        int x_p = 0;
        int y_p = 0;
        while (positionCount-- > 0) {
            int time_q = sc.nextInt();
            int x_q = sc.nextInt();
            int y_q = sc.nextInt();
            
            if (!canGo(time_p, x_p, y_p, time_q, x_q, y_q)) {
                can = false;
            }
            
            time_p = time_q;
            x_p = x_q;
            y_p = y_q;
        }
        
        if (can) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    } main {
        // 自分の得意な言語で
        // Let's チャレンジ！！

        Scanner sc = new Scanner(System.in);
        boolean can = true;
        int positionCount = sc.nextInt();
        int time_p = 0;
        int x_p = 0;
        int y_p = 0;
        while (positionCount-- > 0) {
            int time_q = sc.nextInt();
            int x_q = sc.nextInt();
            int y_q = sc.nextInt();
            
            if (!canGo(time_p, x_p, y_p, time_q, x_q, y_q)) {
                can = false;
            }
            
            time_p = time_q;
            x_p = x_q;
            y_p = y_q;
        }
        
        if (can) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) boolean can = true; can true int positionCount = sc.nextInt(); positionCount sc.nextInt() sc.nextInt sc int time_p = 0; time_p 0 int x_p = 0; x_p 0 int y_p = 0; y_p 0 while (positionCount-- > 0) {
            int time_q = sc.nextInt();
            int x_q = sc.nextInt();
            int y_q = sc.nextInt();
            
            if (!canGo(time_p, x_p, y_p, time_q, x_q, y_q)) {
                can = false;
            }
            
            time_p = time_q;
            x_p = x_q;
            y_p = y_q;
        } positionCount-- > 0 positionCount-- positionCount 0 {
            int time_q = sc.nextInt();
            int x_q = sc.nextInt();
            int y_q = sc.nextInt();
            
            if (!canGo(time_p, x_p, y_p, time_q, x_q, y_q)) {
                can = false;
            }
            
            time_p = time_q;
            x_p = x_q;
            y_p = y_q;
        } int time_q = sc.nextInt(); time_q sc.nextInt() sc.nextInt sc int x_q = sc.nextInt(); x_q sc.nextInt() sc.nextInt sc int y_q = sc.nextInt(); y_q sc.nextInt() sc.nextInt sc if (!canGo(time_p, x_p, y_p, time_q, x_q, y_q)) {
                can = false;
            } !canGo(time_p, x_p, y_p, time_q, x_q, y_q) canGo(time_p, x_p, y_p, time_q, x_q, y_q) canGo time_p x_p y_p time_q x_q y_q {
                can = false;
            } can = false can false time_p = time_q time_p time_q x_p = x_q x_p x_q y_p = y_q y_p y_q if (can) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        } can {
            System.out.println("Yes");
        } System.out.println("Yes") System.out.println System.out System System.out "Yes" {
            System.out.println("No");
        } System.out.println("No") System.out.println System.out System System.out "No" String[] args args public static boolean canGo(int time_p, int x_p, int y_p, int time_q, int x_q, int y_q) {
        int timeDifference = time_q - time_p;
        int length_x = Math.abs(x_q - x_p);
        int length_y = Math.abs(y_q - y_p);
        int moveLength = length_x + length_y;
        
        if (timeDifference < moveLength) return false;
        if (timeDifference == moveLength) return true;
        
        while (timeDifference != moveLength) {
            timeDifference -= 2;
            if (timeDifference < moveLength) return false;
            if (timeDifference == moveLength) return true;
        }
        
        return true;
    } canGo {
        int timeDifference = time_q - time_p;
        int length_x = Math.abs(x_q - x_p);
        int length_y = Math.abs(y_q - y_p);
        int moveLength = length_x + length_y;
        
        if (timeDifference < moveLength) return false;
        if (timeDifference == moveLength) return true;
        
        while (timeDifference != moveLength) {
            timeDifference -= 2;
            if (timeDifference < moveLength) return false;
            if (timeDifference == moveLength) return true;
        }
        
        return true;
    } int timeDifference = time_q - time_p; timeDifference time_q - time_p time_q time_p int length_x = Math.abs(x_q - x_p); length_x Math.abs(x_q - x_p) Math.abs Math x_q - x_p x_q x_p int length_y = Math.abs(y_q - y_p); length_y Math.abs(y_q - y_p) Math.abs Math y_q - y_p y_q y_p int moveLength = length_x + length_y; moveLength length_x + length_y length_x length_y if (timeDifference < moveLength) return false; timeDifference < moveLength timeDifference moveLength return false; false if (timeDifference == moveLength) return true; timeDifference == moveLength timeDifference moveLength return true; true while (timeDifference != moveLength) {
            timeDifference -= 2;
            if (timeDifference < moveLength) return false;
            if (timeDifference == moveLength) return true;
        } timeDifference != moveLength timeDifference moveLength {
            timeDifference -= 2;
            if (timeDifference < moveLength) return false;
            if (timeDifference == moveLength) return true;
        } timeDifference -= 2 timeDifference 2 if (timeDifference < moveLength) return false; timeDifference < moveLength timeDifference moveLength return false; false if (timeDifference == moveLength) return true; timeDifference == moveLength timeDifference moveLength return true; true return true; true int time_p time_p int x_p x_p int y_p y_p int time_q time_q int x_q x_q int y_q y_q public class Main {
    public static void main(String[] args) {
        // 自分の得意な言語で
        // Let's チャレンジ！！

        Scanner sc = new Scanner(System.in);
        boolean can = true;
        int positionCount = sc.nextInt();
        int time_p = 0;
        int x_p = 0;
        int y_p = 0;
        while (positionCount-- > 0) {
            int time_q = sc.nextInt();
            int x_q = sc.nextInt();
            int y_q = sc.nextInt();
            
            if (!canGo(time_p, x_p, y_p, time_q, x_q, y_q)) {
                can = false;
            }
            
            time_p = time_q;
            x_p = x_q;
            y_p = y_q;
        }
        
        if (can) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }
    
    public static boolean canGo(int time_p, int x_p, int y_p, int time_q, int x_q, int y_q) {
        int timeDifference = time_q - time_p;
        int length_x = Math.abs(x_q - x_p);
        int length_y = Math.abs(y_q - y_p);
        int moveLength = length_x + length_y;
        
        if (timeDifference < moveLength) return false;
        if (timeDifference == moveLength) return true;
        
        while (timeDifference != moveLength) {
            timeDifference -= 2;
            if (timeDifference < moveLength) return false;
            if (timeDifference == moveLength) return true;
        }
        
        return true;
    }
} public class Main {
    public static void main(String[] args) {
        // 自分の得意な言語で
        // Let's チャレンジ！！

        Scanner sc = new Scanner(System.in);
        boolean can = true;
        int positionCount = sc.nextInt();
        int time_p = 0;
        int x_p = 0;
        int y_p = 0;
        while (positionCount-- > 0) {
            int time_q = sc.nextInt();
            int x_q = sc.nextInt();
            int y_q = sc.nextInt();
            
            if (!canGo(time_p, x_p, y_p, time_q, x_q, y_q)) {
                can = false;
            }
            
            time_p = time_q;
            x_p = x_q;
            y_p = y_q;
        }
        
        if (can) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }
    
    public static boolean canGo(int time_p, int x_p, int y_p, int time_q, int x_q, int y_q) {
        int timeDifference = time_q - time_p;
        int length_x = Math.abs(x_q - x_p);
        int length_y = Math.abs(y_q - y_p);
        int moveLength = length_x + length_y;
        
        if (timeDifference < moveLength) return false;
        if (timeDifference == moveLength) return true;
        
        while (timeDifference != moveLength) {
            timeDifference -= 2;
            if (timeDifference < moveLength) return false;
            if (timeDifference == moveLength) return true;
        }
        
        return true;
    }
} Main
import java.util.*;


public class Main {
    public static void main(String[] args) {
        // 自分の得意な言語で
        // Let's チャレンジ！！

        Scanner sc = new Scanner(System.in);
        boolean can = true;
        int positionCount = sc.nextInt();
        int time_p = 0;
        int x_p = 0;
        int y_p = 0;
        while (positionCount-- > 0) {
            int time_q = sc.nextInt();
            int x_q = sc.nextInt();
            int y_q = sc.nextInt();
            
            if (!canGo(time_p, x_p, y_p, time_q, x_q, y_q)) {
                can = false;
            }
            
            time_p = time_q;
            x_p = x_q;
            y_p = y_q;
        }
        
        if (can) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }
    
    public static boolean canGo(int time_p, int x_p, int y_p, int time_q, int x_q, int y_q) {
        int timeDifference = time_q - time_p;
        int length_x = Math.abs(x_q - x_p);
        int length_y = Math.abs(y_q - y_p);
        int moveLength = length_x + length_y;
        
        if (timeDifference < moveLength) return false;
        if (timeDifference == moveLength) return true;
        
        while (timeDifference != moveLength) {
            timeDifference -= 2;
            if (timeDifference < moveLength) return false;
            if (timeDifference == moveLength) return true;
        }
        
        return true;
    }
}