
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	private static final int MOD = (int)Math.pow(10, 9);
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = 3;
		int[][] f = new int[n][n];
		int[][] rowDiff = new int[n][n];
		int[][] colDiff = new int[n][n];
		
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				f[i][j] = sc.nextInt();
			}
		}
		int pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			}
		}
		
		pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			}
		}
		
		for (int i = 0; i < n; i++) {
			if ((rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2])) {
				System.out.println("No");
				System.exit(0);
			}
			 //System.out.print(Arrays.toString(rowDiff[i]));
		}
		
		for (int i = 0; i < n; i++) {
			if ((colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i])) {
				System.out.println("No");
				System.exit(0);
			}
			// System.out.print(Arrays.toString(colDiff[i]));
		}
		System.out.println("Yes");
	}
	
	static class FastReader {
	    BufferedReader br;
	    StringTokenizer st;
	
	    public FastReader() {
	      br = new BufferedReader(new InputStreamReader(System.in));
	    }
	  
	    String next() { 
	      while (st == null || !st.hasMoreElements()) {
	        try {
	          st = new StringTokenizer(br.readLine());
	        } catch (IOException  e) {
	          e.printStackTrace();
	        }
	      }
	      return st.nextToken();
	    }
	
	    int nextInt() {
	      return Integer.parseInt(next());
	    }
	
	    long nextLong() {
	      return Long.parseLong(next());
	    }
	
	    double nextDouble() { 
	      return Double.parseDouble(next());
	    }
	
	    String nextLine() {
	      String str = "";
	        try{
	            str = br.readLine();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        return str;
	      }
	  }
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.Arrays; Arrays java.util import java.util.StringTokenizer; StringTokenizer java.util public class Main {
	private static final int MOD = (int)Math.pow(10, 9);
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = 3;
		int[][] f = new int[n][n];
		int[][] rowDiff = new int[n][n];
		int[][] colDiff = new int[n][n];
		
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				f[i][j] = sc.nextInt();
			}
		}
		int pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			}
		}
		
		pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			}
		}
		
		for (int i = 0; i < n; i++) {
			if ((rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2])) {
				System.out.println("No");
				System.exit(0);
			}
			 //System.out.print(Arrays.toString(rowDiff[i]));
		}
		
		for (int i = 0; i < n; i++) {
			if ((colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i])) {
				System.out.println("No");
				System.exit(0);
			}
			// System.out.print(Arrays.toString(colDiff[i]));
		}
		System.out.println("Yes");
	}
	
	static class FastReader {
	    BufferedReader br;
	    StringTokenizer st;
	
	    public FastReader() {
	      br = new BufferedReader(new InputStreamReader(System.in));
	    }
	  
	    String next() { 
	      while (st == null || !st.hasMoreElements()) {
	        try {
	          st = new StringTokenizer(br.readLine());
	        } catch (IOException  e) {
	          e.printStackTrace();
	        }
	      }
	      return st.nextToken();
	    }
	
	    int nextInt() {
	      return Integer.parseInt(next());
	    }
	
	    long nextLong() {
	      return Long.parseLong(next());
	    }
	
	    double nextDouble() { 
	      return Double.parseDouble(next());
	    }
	
	    String nextLine() {
	      String str = "";
	        try{
	            str = br.readLine();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        return str;
	      }
	  }
} Main private static final int MOD = (int)Math.pow(10, 9); MOD (int)Math.pow(10, 9) Math.pow Math 10 9 public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = 3;
		int[][] f = new int[n][n];
		int[][] rowDiff = new int[n][n];
		int[][] colDiff = new int[n][n];
		
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				f[i][j] = sc.nextInt();
			}
		}
		int pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			}
		}
		
		pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			}
		}
		
		for (int i = 0; i < n; i++) {
			if ((rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2])) {
				System.out.println("No");
				System.exit(0);
			}
			 //System.out.print(Arrays.toString(rowDiff[i]));
		}
		
		for (int i = 0; i < n; i++) {
			if ((colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i])) {
				System.out.println("No");
				System.exit(0);
			}
			// System.out.print(Arrays.toString(colDiff[i]));
		}
		System.out.println("Yes");
	} main {
		FastReader sc = new FastReader();
		int n = 3;
		int[][] f = new int[n][n];
		int[][] rowDiff = new int[n][n];
		int[][] colDiff = new int[n][n];
		
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				f[i][j] = sc.nextInt();
			}
		}
		int pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			}
		}
		
		pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			}
		}
		
		for (int i = 0; i < n; i++) {
			if ((rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2])) {
				System.out.println("No");
				System.exit(0);
			}
			 //System.out.print(Arrays.toString(rowDiff[i]));
		}
		
		for (int i = 0; i < n; i++) {
			if ((colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i])) {
				System.out.println("No");
				System.exit(0);
			}
			// System.out.print(Arrays.toString(colDiff[i]));
		}
		System.out.println("Yes");
	} FastReader sc = new FastReader(); sc new FastReader() int n = 3; n 3 int[][] f = new int[n][n]; f new int[n][n] n n int[][] rowDiff = new int[n][n]; rowDiff new int[n][n] n n int[][] colDiff = new int[n][n]; colDiff new int[n][n] n n for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				f[i][j] = sc.nextInt();
			}
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			for (int j = 0; j < n; j++) {
				f[i][j] = sc.nextInt();
			}
		} {
			for (int j = 0; j < n; j++) {
				f[i][j] = sc.nextInt();
			}
		} for (int j = 0; j < n; j++) {
				f[i][j] = sc.nextInt();
			} int j = 0; int j = 0; j 0 j < n j n j++ j++ j {
				f[i][j] = sc.nextInt();
			} {
				f[i][j] = sc.nextInt();
			} f[i][j] = sc.nextInt() f[i][j] f[i] f i j sc.nextInt() sc.nextInt sc int pos = 0; pos 0 for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			}
		} int i = 0 ; int i = 0 ; i 0 i < n - 1 i n - 1 n 1 i++ i++ i {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			}
		} {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			}
		} for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			} int j = i + 1; int j = i + 1; j i + 1 i 1 j < n j n j++ j++ j {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			} {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			} for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				} int k = 0; int k = 0; k 0 k < n k n k++ k++ k {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				} {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				} rowDiff[pos][k] = f[j][k] - f[i][k] rowDiff[pos][k] rowDiff[pos] rowDiff pos k f[j][k] - f[i][k] f[j][k] f[j] f j k f[i][k] f[i] f i k pos++ pos pos = 0 pos 0 for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			}
		} int i = 0 ; int i = 0 ; i 0 i < n - 1 i n - 1 n 1 i++ i++ i {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			}
		} {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			}
		} for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			} int j = i + 1; int j = i + 1; j i + 1 i 1 j < n j n j++ j++ j {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			} {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			} for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				} int k = 0; int k = 0; k 0 k < n k n k++ k++ k {
					colDiff[k][pos] = f[k][j] - f[k][i];
				} {
					colDiff[k][pos] = f[k][j] - f[k][i];
				} colDiff[k][pos] = f[k][j] - f[k][i] colDiff[k][pos] colDiff[k] colDiff k pos f[k][j] - f[k][i] f[k][j] f[k] f k j f[k][i] f[k] f k i pos++ pos for (int i = 0; i < n; i++) {
			if ((rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2])) {
				System.out.println("No");
				System.exit(0);
			}
			 //System.out.print(Arrays.toString(rowDiff[i]));
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			if ((rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2])) {
				System.out.println("No");
				System.exit(0);
			}
			 //System.out.print(Arrays.toString(rowDiff[i]));
		} {
			if ((rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2])) {
				System.out.println("No");
				System.exit(0);
			}
			 //System.out.print(Arrays.toString(rowDiff[i]));
		} if ((rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2])) {
				System.out.println("No");
				System.exit(0);
			} (rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2]) (rowDiff[i][0] != rowDiff[i][1]) rowDiff[i][0] rowDiff[i] rowDiff i 0 rowDiff[i][1] rowDiff[i] rowDiff i 1 (rowDiff[i][1] != rowDiff[i][2]) rowDiff[i][1] rowDiff[i] rowDiff i 1 rowDiff[i][2] rowDiff[i] rowDiff i 2 {
				System.out.println("No");
				System.exit(0);
			} System.out.println("No") System.out.println System.out System System.out "No" System.exit(0) System.exit System 0 for (int i = 0; i < n; i++) {
			if ((colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i])) {
				System.out.println("No");
				System.exit(0);
			}
			// System.out.print(Arrays.toString(colDiff[i]));
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			if ((colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i])) {
				System.out.println("No");
				System.exit(0);
			}
			// System.out.print(Arrays.toString(colDiff[i]));
		} {
			if ((colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i])) {
				System.out.println("No");
				System.exit(0);
			}
			// System.out.print(Arrays.toString(colDiff[i]));
		} if ((colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i])) {
				System.out.println("No");
				System.exit(0);
			} (colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i]) (colDiff[0][i] != colDiff[1][i]) colDiff[0][i] colDiff[0] colDiff 0 i colDiff[1][i] colDiff[1] colDiff 1 i (colDiff[1][i] != colDiff[2][i]) colDiff[1][i] colDiff[1] colDiff 1 i colDiff[2][i] colDiff[2] colDiff 2 i {
				System.out.println("No");
				System.exit(0);
			} System.out.println("No") System.out.println System.out System System.out "No" System.exit(0) System.exit System 0 System.out.println("Yes") System.out.println System.out System System.out "Yes" String[] args args static class FastReader {
	    BufferedReader br;
	    StringTokenizer st;
	
	    public FastReader() {
	      br = new BufferedReader(new InputStreamReader(System.in));
	    }
	  
	    String next() { 
	      while (st == null || !st.hasMoreElements()) {
	        try {
	          st = new StringTokenizer(br.readLine());
	        } catch (IOException  e) {
	          e.printStackTrace();
	        }
	      }
	      return st.nextToken();
	    }
	
	    int nextInt() {
	      return Integer.parseInt(next());
	    }
	
	    long nextLong() {
	      return Long.parseLong(next());
	    }
	
	    double nextDouble() { 
	      return Double.parseDouble(next());
	    }
	
	    String nextLine() {
	      String str = "";
	        try{
	            str = br.readLine();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        return str;
	      }
	  } FastReader BufferedReader br; br StringTokenizer st; st public FastReader() {
	      br = new BufferedReader(new InputStreamReader(System.in));
	    } FastReader {
	      br = new BufferedReader(new InputStreamReader(System.in));
	    } br = new BufferedReader(new InputStreamReader(System.in)) br new BufferedReader(new InputStreamReader(System.in)) String next() { 
	      while (st == null || !st.hasMoreElements()) {
	        try {
	          st = new StringTokenizer(br.readLine());
	        } catch (IOException  e) {
	          e.printStackTrace();
	        }
	      }
	      return st.nextToken();
	    } next { 
	      while (st == null || !st.hasMoreElements()) {
	        try {
	          st = new StringTokenizer(br.readLine());
	        } catch (IOException  e) {
	          e.printStackTrace();
	        }
	      }
	      return st.nextToken();
	    } while (st == null || !st.hasMoreElements()) {
	        try {
	          st = new StringTokenizer(br.readLine());
	        } catch (IOException  e) {
	          e.printStackTrace();
	        }
	      } st == null || !st.hasMoreElements() st == null st null !st.hasMoreElements() st.hasMoreElements() st.hasMoreElements st {
	        try {
	          st = new StringTokenizer(br.readLine());
	        } catch (IOException  e) {
	          e.printStackTrace();
	        }
	      } try {
	          st = new StringTokenizer(br.readLine());
	        } catch (IOException  e) {
	          e.printStackTrace();
	        } catch (IOException  e) {
	          e.printStackTrace();
	        } IOException  e {
	          e.printStackTrace();
	        } e.printStackTrace() e.printStackTrace e {
	          st = new StringTokenizer(br.readLine());
	        } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st int nextInt() {
	      return Integer.parseInt(next());
	    } nextInt {
	      return Integer.parseInt(next());
	    } return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next long nextLong() {
	      return Long.parseLong(next());
	    } nextLong {
	      return Long.parseLong(next());
	    } return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next double nextDouble() { 
	      return Double.parseDouble(next());
	    } nextDouble { 
	      return Double.parseDouble(next());
	    } return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next String nextLine() {
	      String str = "";
	        try{
	            str = br.readLine();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        return str;
	      } nextLine {
	      String str = "";
	        try{
	            str = br.readLine();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        return str;
	      } String str = ""; str "" try{
	            str = br.readLine();
	        } catch (IOException e) {
	            e.printStackTrace();
	        } catch (IOException e) {
	            e.printStackTrace();
	        } IOException e {
	            e.printStackTrace();
	        } e.printStackTrace() e.printStackTrace e {
	            str = br.readLine();
	        } str = br.readLine() str br.readLine() br.readLine br return str; str public class Main {
	private static final int MOD = (int)Math.pow(10, 9);
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = 3;
		int[][] f = new int[n][n];
		int[][] rowDiff = new int[n][n];
		int[][] colDiff = new int[n][n];
		
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				f[i][j] = sc.nextInt();
			}
		}
		int pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			}
		}
		
		pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			}
		}
		
		for (int i = 0; i < n; i++) {
			if ((rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2])) {
				System.out.println("No");
				System.exit(0);
			}
			 //System.out.print(Arrays.toString(rowDiff[i]));
		}
		
		for (int i = 0; i < n; i++) {
			if ((colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i])) {
				System.out.println("No");
				System.exit(0);
			}
			// System.out.print(Arrays.toString(colDiff[i]));
		}
		System.out.println("Yes");
	}
	
	static class FastReader {
	    BufferedReader br;
	    StringTokenizer st;
	
	    public FastReader() {
	      br = new BufferedReader(new InputStreamReader(System.in));
	    }
	  
	    String next() { 
	      while (st == null || !st.hasMoreElements()) {
	        try {
	          st = new StringTokenizer(br.readLine());
	        } catch (IOException  e) {
	          e.printStackTrace();
	        }
	      }
	      return st.nextToken();
	    }
	
	    int nextInt() {
	      return Integer.parseInt(next());
	    }
	
	    long nextLong() {
	      return Long.parseLong(next());
	    }
	
	    double nextDouble() { 
	      return Double.parseDouble(next());
	    }
	
	    String nextLine() {
	      String str = "";
	        try{
	            str = br.readLine();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        return str;
	      }
	  }
} public class Main {
	private static final int MOD = (int)Math.pow(10, 9);
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = 3;
		int[][] f = new int[n][n];
		int[][] rowDiff = new int[n][n];
		int[][] colDiff = new int[n][n];
		
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				f[i][j] = sc.nextInt();
			}
		}
		int pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			}
		}
		
		pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			}
		}
		
		for (int i = 0; i < n; i++) {
			if ((rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2])) {
				System.out.println("No");
				System.exit(0);
			}
			 //System.out.print(Arrays.toString(rowDiff[i]));
		}
		
		for (int i = 0; i < n; i++) {
			if ((colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i])) {
				System.out.println("No");
				System.exit(0);
			}
			// System.out.print(Arrays.toString(colDiff[i]));
		}
		System.out.println("Yes");
	}
	
	static class FastReader {
	    BufferedReader br;
	    StringTokenizer st;
	
	    public FastReader() {
	      br = new BufferedReader(new InputStreamReader(System.in));
	    }
	  
	    String next() { 
	      while (st == null || !st.hasMoreElements()) {
	        try {
	          st = new StringTokenizer(br.readLine());
	        } catch (IOException  e) {
	          e.printStackTrace();
	        }
	      }
	      return st.nextToken();
	    }
	
	    int nextInt() {
	      return Integer.parseInt(next());
	    }
	
	    long nextLong() {
	      return Long.parseLong(next());
	    }
	
	    double nextDouble() { 
	      return Double.parseDouble(next());
	    }
	
	    String nextLine() {
	      String str = "";
	        try{
	            str = br.readLine();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        return str;
	      }
	  }
} Main

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	private static final int MOD = (int)Math.pow(10, 9);
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		int n = 3;
		int[][] f = new int[n][n];
		int[][] rowDiff = new int[n][n];
		int[][] colDiff = new int[n][n];
		
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				f[i][j] = sc.nextInt();
			}
		}
		int pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					rowDiff[pos][k] = f[j][k] - f[i][k];
				}
				pos++;
			}
		}
		
		pos = 0;
		for (int i = 0 ; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) {
				for (int k = 0; k < n; k++) {
					colDiff[k][pos] = f[k][j] - f[k][i];
				}
				pos++;
			}
		}
		
		for (int i = 0; i < n; i++) {
			if ((rowDiff[i][0] != rowDiff[i][1]) || (rowDiff[i][1] != rowDiff[i][2])) {
				System.out.println("No");
				System.exit(0);
			}
			 //System.out.print(Arrays.toString(rowDiff[i]));
		}
		
		for (int i = 0; i < n; i++) {
			if ((colDiff[0][i] != colDiff[1][i]) || (colDiff[1][i] != colDiff[2][i])) {
				System.out.println("No");
				System.exit(0);
			}
			// System.out.print(Arrays.toString(colDiff[i]));
		}
		System.out.println("Yes");
	}
	
	static class FastReader {
	    BufferedReader br;
	    StringTokenizer st;
	
	    public FastReader() {
	      br = new BufferedReader(new InputStreamReader(System.in));
	    }
	  
	    String next() { 
	      while (st == null || !st.hasMoreElements()) {
	        try {
	          st = new StringTokenizer(br.readLine());
	        } catch (IOException  e) {
	          e.printStackTrace();
	        }
	      }
	      return st.nextToken();
	    }
	
	    int nextInt() {
	      return Integer.parseInt(next());
	    }
	
	    long nextLong() {
	      return Long.parseLong(next());
	    }
	
	    double nextDouble() { 
	      return Double.parseDouble(next());
	    }
	
	    String nextLine() {
	      String str = "";
	        try{
	            str = br.readLine();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        return str;
	      }
	  }
}
