import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {

    private static Scanner sc;

    public static void main(String[] args) {
        Main instance = new Main();
        sc = instance.new Scanner();
        instance.solve();
    }

    private void solve() {
        try {
            int N = sc.nextInt();
            int[] t = new int[N+1];
            int[] x = new int[N+1];
            int[] y = new int[N+1];

            t[0] = 0;
            x[0] = 0;
            y[0] = 0;

            for(int i=0; i<N; i++) {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            }

            // String res = "No";
            // boolean can = false;
            boolean can = true;

            for(int a = 0; a<N; a++) {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            }

            if(can) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
            // System.out.println(res);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private class Scanner {
        String[] s;
        int i;
        BufferedReader br;
        String regex = " ";

        public Scanner() {
            s = new String[0];
            i = 0;
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        @Override
        protected void finalize() throws Throwable {
            try {
                super.finalize();
            } finally {
                destruction();
            }
        }

        private void destruction() throws IOException {
            if (br != null) br.close();
        }

        public String next() throws IOException {
            if (i < s.length) return s[i++];
            String st = br.readLine();
            while (st == "") st = br.readLine();
            s = st.split(regex, 0);
            i = 0;
            return s[i++];
        }

        public int nextInt() throws NumberFormatException, IOException {
            return Integer.parseInt(next());
        }
    }
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.ArrayList; ArrayList java.util import java.util.Collections; Collections java.util import java.util.List; List java.util public class Main {

    private static Scanner sc;

    public static void main(String[] args) {
        Main instance = new Main();
        sc = instance.new Scanner();
        instance.solve();
    }

    private void solve() {
        try {
            int N = sc.nextInt();
            int[] t = new int[N+1];
            int[] x = new int[N+1];
            int[] y = new int[N+1];

            t[0] = 0;
            x[0] = 0;
            y[0] = 0;

            for(int i=0; i<N; i++) {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            }

            // String res = "No";
            // boolean can = false;
            boolean can = true;

            for(int a = 0; a<N; a++) {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            }

            if(can) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
            // System.out.println(res);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private class Scanner {
        String[] s;
        int i;
        BufferedReader br;
        String regex = " ";

        public Scanner() {
            s = new String[0];
            i = 0;
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        @Override
        protected void finalize() throws Throwable {
            try {
                super.finalize();
            } finally {
                destruction();
            }
        }

        private void destruction() throws IOException {
            if (br != null) br.close();
        }

        public String next() throws IOException {
            if (i < s.length) return s[i++];
            String st = br.readLine();
            while (st == "") st = br.readLine();
            s = st.split(regex, 0);
            i = 0;
            return s[i++];
        }

        public int nextInt() throws NumberFormatException, IOException {
            return Integer.parseInt(next());
        }
    }
} Main private static Scanner sc; sc public static void main(String[] args) {
        Main instance = new Main();
        sc = instance.new Scanner();
        instance.solve();
    } main {
        Main instance = new Main();
        sc = instance.new Scanner();
        instance.solve();
    } Main instance = new Main(); instance new Main() sc = instance.new Scanner() sc instance.new Scanner() instance instance instance.solve() instance.solve instance String[] args args private void solve() {
        try {
            int N = sc.nextInt();
            int[] t = new int[N+1];
            int[] x = new int[N+1];
            int[] y = new int[N+1];

            t[0] = 0;
            x[0] = 0;
            y[0] = 0;

            for(int i=0; i<N; i++) {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            }

            // String res = "No";
            // boolean can = false;
            boolean can = true;

            for(int a = 0; a<N; a++) {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            }

            if(can) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
            // System.out.println(res);

        } catch (Exception e) {
            e.printStackTrace();
        }
    } solve {
        try {
            int N = sc.nextInt();
            int[] t = new int[N+1];
            int[] x = new int[N+1];
            int[] y = new int[N+1];

            t[0] = 0;
            x[0] = 0;
            y[0] = 0;

            for(int i=0; i<N; i++) {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            }

            // String res = "No";
            // boolean can = false;
            boolean can = true;

            for(int a = 0; a<N; a++) {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            }

            if(can) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
            // System.out.println(res);

        } catch (Exception e) {
            e.printStackTrace();
        }
    } try {
            int N = sc.nextInt();
            int[] t = new int[N+1];
            int[] x = new int[N+1];
            int[] y = new int[N+1];

            t[0] = 0;
            x[0] = 0;
            y[0] = 0;

            for(int i=0; i<N; i++) {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            }

            // String res = "No";
            // boolean can = false;
            boolean can = true;

            for(int a = 0; a<N; a++) {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            }

            if(can) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
            // System.out.println(res);

        } catch (Exception e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } Exception e {
            e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
            int N = sc.nextInt();
            int[] t = new int[N+1];
            int[] x = new int[N+1];
            int[] y = new int[N+1];

            t[0] = 0;
            x[0] = 0;
            y[0] = 0;

            for(int i=0; i<N; i++) {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            }

            // String res = "No";
            // boolean can = false;
            boolean can = true;

            for(int a = 0; a<N; a++) {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            }

            if(can) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
            // System.out.println(res);

        } int N = sc.nextInt(); N sc.nextInt() sc.nextInt 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 t[0] = 0 t[0] t 0 0 x[0] = 0 x[0] x 0 0 y[0] = 0 y[0] y 0 0 for(int i=0; i<N; i++) {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            } int i=0; int i=0; i 0 i<N i N i++ i++ i {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            } {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            } t[i+1] = sc.nextInt() t[i+1] t i+1 i 1 sc.nextInt() sc.nextInt sc x[i+1] = sc.nextInt() x[i+1] x i+1 i 1 sc.nextInt() sc.nextInt sc y[i+1] = sc.nextInt() y[i+1] y i+1 i 1 sc.nextInt() sc.nextInt sc boolean can = true; can true for(int a = 0; a<N; a++) {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            } int a = 0; int a = 0; a 0 a<N a N a++ a++ a {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            } {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            } int dt = t[a+1]-t[a]; dt t[a+1]-t[a] t[a+1] t a+1 a 1 t[a] t a int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]); distance Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]) Math.abs(x[a+1]-x[a]) Math.abs Math x[a+1]-x[a] x[a+1] x a+1 a 1 x[a] x a Math.abs(y[a+1]-y[a]) Math.abs Math y[a+1]-y[a] y[a+1] y a+1 a 1 y[a] y a if(distance>dt) can = false; distance>dt distance dt can = false can false if(distance%2!=dt%2) can= false; distance%2!=dt%2 distance%2 distance 2 dt%2 dt 2 can= false can false 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" private class Scanner {
        String[] s;
        int i;
        BufferedReader br;
        String regex = " ";

        public Scanner() {
            s = new String[0];
            i = 0;
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        @Override
        protected void finalize() throws Throwable {
            try {
                super.finalize();
            } finally {
                destruction();
            }
        }

        private void destruction() throws IOException {
            if (br != null) br.close();
        }

        public String next() throws IOException {
            if (i < s.length) return s[i++];
            String st = br.readLine();
            while (st == "") st = br.readLine();
            s = st.split(regex, 0);
            i = 0;
            return s[i++];
        }

        public int nextInt() throws NumberFormatException, IOException {
            return Integer.parseInt(next());
        }
    } Scanner String[] s; s int i; i BufferedReader br; br String regex = " "; regex " " public Scanner() {
            s = new String[0];
            i = 0;
            br = new BufferedReader(new InputStreamReader(System.in));
        } Scanner {
            s = new String[0];
            i = 0;
            br = new BufferedReader(new InputStreamReader(System.in));
        } s = new String[0] s new String[0] 0 i = 0 i 0 br = new BufferedReader(new InputStreamReader(System.in)) br new BufferedReader(new InputStreamReader(System.in)) @Override
        protected void finalize() throws Throwable {
            try {
                super.finalize();
            } finally {
                destruction();
            }
        } finalize {
            try {
                super.finalize();
            } finally {
                destruction();
            }
        } try {
                super.finalize();
            } finally {
                destruction();
            } {
                destruction();
            } destruction() destruction {
                super.finalize();
            } super.finalize() super.finalize super private void destruction() throws IOException {
            if (br != null) br.close();
        } destruction {
            if (br != null) br.close();
        } if (br != null) br.close(); br != null br null br.close() br.close br public String next() throws IOException {
            if (i < s.length) return s[i++];
            String st = br.readLine();
            while (st == "") st = br.readLine();
            s = st.split(regex, 0);
            i = 0;
            return s[i++];
        } next {
            if (i < s.length) return s[i++];
            String st = br.readLine();
            while (st == "") st = br.readLine();
            s = st.split(regex, 0);
            i = 0;
            return s[i++];
        } if (i < s.length) return s[i++]; i < s.length i s.length s s.length return s[i++]; s[i++] s i++ i String st = br.readLine(); st br.readLine() br.readLine br while (st == "") st = br.readLine(); st == "" st "" st = br.readLine() st br.readLine() br.readLine br s = st.split(regex, 0) s st.split(regex, 0) st.split st regex 0 i = 0 i 0 return s[i++]; s[i++] s i++ i public int nextInt() throws NumberFormatException, IOException {
            return Integer.parseInt(next());
        } nextInt {
            return Integer.parseInt(next());
        } return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next public class Main {

    private static Scanner sc;

    public static void main(String[] args) {
        Main instance = new Main();
        sc = instance.new Scanner();
        instance.solve();
    }

    private void solve() {
        try {
            int N = sc.nextInt();
            int[] t = new int[N+1];
            int[] x = new int[N+1];
            int[] y = new int[N+1];

            t[0] = 0;
            x[0] = 0;
            y[0] = 0;

            for(int i=0; i<N; i++) {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            }

            // String res = "No";
            // boolean can = false;
            boolean can = true;

            for(int a = 0; a<N; a++) {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            }

            if(can) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
            // System.out.println(res);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private class Scanner {
        String[] s;
        int i;
        BufferedReader br;
        String regex = " ";

        public Scanner() {
            s = new String[0];
            i = 0;
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        @Override
        protected void finalize() throws Throwable {
            try {
                super.finalize();
            } finally {
                destruction();
            }
        }

        private void destruction() throws IOException {
            if (br != null) br.close();
        }

        public String next() throws IOException {
            if (i < s.length) return s[i++];
            String st = br.readLine();
            while (st == "") st = br.readLine();
            s = st.split(regex, 0);
            i = 0;
            return s[i++];
        }

        public int nextInt() throws NumberFormatException, IOException {
            return Integer.parseInt(next());
        }
    }
} public class Main {

    private static Scanner sc;

    public static void main(String[] args) {
        Main instance = new Main();
        sc = instance.new Scanner();
        instance.solve();
    }

    private void solve() {
        try {
            int N = sc.nextInt();
            int[] t = new int[N+1];
            int[] x = new int[N+1];
            int[] y = new int[N+1];

            t[0] = 0;
            x[0] = 0;
            y[0] = 0;

            for(int i=0; i<N; i++) {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            }

            // String res = "No";
            // boolean can = false;
            boolean can = true;

            for(int a = 0; a<N; a++) {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            }

            if(can) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
            // System.out.println(res);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private class Scanner {
        String[] s;
        int i;
        BufferedReader br;
        String regex = " ";

        public Scanner() {
            s = new String[0];
            i = 0;
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        @Override
        protected void finalize() throws Throwable {
            try {
                super.finalize();
            } finally {
                destruction();
            }
        }

        private void destruction() throws IOException {
            if (br != null) br.close();
        }

        public String next() throws IOException {
            if (i < s.length) return s[i++];
            String st = br.readLine();
            while (st == "") st = br.readLine();
            s = st.split(regex, 0);
            i = 0;
            return s[i++];
        }

        public int nextInt() throws NumberFormatException, IOException {
            return Integer.parseInt(next());
        }
    }
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {

    private static Scanner sc;

    public static void main(String[] args) {
        Main instance = new Main();
        sc = instance.new Scanner();
        instance.solve();
    }

    private void solve() {
        try {
            int N = sc.nextInt();
            int[] t = new int[N+1];
            int[] x = new int[N+1];
            int[] y = new int[N+1];

            t[0] = 0;
            x[0] = 0;
            y[0] = 0;

            for(int i=0; i<N; i++) {
                t[i+1] = sc.nextInt();
                x[i+1] = sc.nextInt();
                y[i+1] = sc.nextInt();
            }

            // String res = "No";
            // boolean can = false;
            boolean can = true;

            for(int a = 0; a<N; a++) {
                int dt = t[a+1]-t[a];
                int distance = Math.abs(x[a+1]-x[a])+Math.abs(y[a+1]-y[a]);
                if(distance>dt) can = false;
                if(distance%2!=dt%2) can= false;
                // if(a!=0) {
                //     int distance = 0;
                //     if(x[a]-x[a-1]>0) {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a]-x[a-1])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a]-x[a-1])+(y[a-1]-x[a]);
                //         }
                //     } else {
                //         if(y[a]-y[a-1]>0) {
                //             distance = (x[a-1]-x[a])+(y[a]-x[a-1]);
                //         } else {
                //             distance = (x[a-1]-x[a])+(y[a-1]-x[a]);
                //         }
                //      }
                //     if(distance%2 != (t[a]-t[a-1])%2||distance>t[a]-t[a-1]) {
                //         break;
                //     }

                // } else {
                //     //a==0
                //     if((x[a]+y[a])%2 != t[a]%2||x[a]+y[a]>t[a]) {
                //         break;
                //     }
                // }


                // if(a!=N-1) {
                //     a++;
                // } else {
                //     res = "Yes";
                //     can = true;
                // }
            }

            if(can) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
            // System.out.println(res);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private class Scanner {
        String[] s;
        int i;
        BufferedReader br;
        String regex = " ";

        public Scanner() {
            s = new String[0];
            i = 0;
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        @Override
        protected void finalize() throws Throwable {
            try {
                super.finalize();
            } finally {
                destruction();
            }
        }

        private void destruction() throws IOException {
            if (br != null) br.close();
        }

        public String next() throws IOException {
            if (i < s.length) return s[i++];
            String st = br.readLine();
            while (st == "") st = br.readLine();
            s = st.split(regex, 0);
            i = 0;
            return s[i++];
        }

        public int nextInt() throws NumberFormatException, IOException {
            return Integer.parseInt(next());
        }
    }
}