import java.util.Scanner;

class Main{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		
		int 
			 	n,
				m,
				l;
				
		long[][]
				A,
				B,
				C;
				
		String output;
		
		//入力処理
		n = Integer.parseInt(sc.next());
		m = Integer.parseInt(sc.next());
		l = Integer.parseInt(sc.next());
		
		//サイズの指定
		A = new long[n][m];
		B = new long[m][l];
		C = new long[n][l];
		
		//A行列の入力
		for(int i = 0;i < n;i++){
			
			for(int k = 0;k < m;k++){
				
				A[i][k] = Integer.parseInt(sc.next());
			}
		}
		
		//B行列の入力
		for(int k = 0;k < m;k++){
			
			for(int j = 0;j < l;j++){
				
				B[k][j] = Integer.parseInt(sc.next());
			}
		}
		
		//C行列の計算
		for(int k = 0;k < m;k++){
			
			for(int i = 0;i < n;i++){
				
				for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}
		
		//出力処理
		for(int i = 0;i < n;i++){
			
				output = "";
				
				for(int j = 0;j < l;j++){
					
					output += C[i][j];
					//数字の間にスペースを入れる
					if(j < l - 1)output += " ";
				}
				
				System.out.print(output + "\n");
				
		}
		
	}
}
 import java.util.Scanner; Scanner java.util class Main{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		
		int 
			 	n,
				m,
				l;
				
		long[][]
				A,
				B,
				C;
				
		String output;
		
		//入力処理
		n = Integer.parseInt(sc.next());
		m = Integer.parseInt(sc.next());
		l = Integer.parseInt(sc.next());
		
		//サイズの指定
		A = new long[n][m];
		B = new long[m][l];
		C = new long[n][l];
		
		//A行列の入力
		for(int i = 0;i < n;i++){
			
			for(int k = 0;k < m;k++){
				
				A[i][k] = Integer.parseInt(sc.next());
			}
		}
		
		//B行列の入力
		for(int k = 0;k < m;k++){
			
			for(int j = 0;j < l;j++){
				
				B[k][j] = Integer.parseInt(sc.next());
			}
		}
		
		//C行列の計算
		for(int k = 0;k < m;k++){
			
			for(int i = 0;i < n;i++){
				
				for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}
		
		//出力処理
		for(int i = 0;i < n;i++){
			
				output = "";
				
				for(int j = 0;j < l;j++){
					
					output += C[i][j];
					//数字の間にスペースを入れる
					if(j < l - 1)output += " ";
				}
				
				System.out.print(output + "\n");
				
		}
		
	}
} Main public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		
		int 
			 	n,
				m,
				l;
				
		long[][]
				A,
				B,
				C;
				
		String output;
		
		//入力処理
		n = Integer.parseInt(sc.next());
		m = Integer.parseInt(sc.next());
		l = Integer.parseInt(sc.next());
		
		//サイズの指定
		A = new long[n][m];
		B = new long[m][l];
		C = new long[n][l];
		
		//A行列の入力
		for(int i = 0;i < n;i++){
			
			for(int k = 0;k < m;k++){
				
				A[i][k] = Integer.parseInt(sc.next());
			}
		}
		
		//B行列の入力
		for(int k = 0;k < m;k++){
			
			for(int j = 0;j < l;j++){
				
				B[k][j] = Integer.parseInt(sc.next());
			}
		}
		
		//C行列の計算
		for(int k = 0;k < m;k++){
			
			for(int i = 0;i < n;i++){
				
				for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}
		
		//出力処理
		for(int i = 0;i < n;i++){
			
				output = "";
				
				for(int j = 0;j < l;j++){
					
					output += C[i][j];
					//数字の間にスペースを入れる
					if(j < l - 1)output += " ";
				}
				
				System.out.print(output + "\n");
				
		}
		
	} main {
		Scanner sc = new Scanner(System.in);
		
		int 
			 	n,
				m,
				l;
				
		long[][]
				A,
				B,
				C;
				
		String output;
		
		//入力処理
		n = Integer.parseInt(sc.next());
		m = Integer.parseInt(sc.next());
		l = Integer.parseInt(sc.next());
		
		//サイズの指定
		A = new long[n][m];
		B = new long[m][l];
		C = new long[n][l];
		
		//A行列の入力
		for(int i = 0;i < n;i++){
			
			for(int k = 0;k < m;k++){
				
				A[i][k] = Integer.parseInt(sc.next());
			}
		}
		
		//B行列の入力
		for(int k = 0;k < m;k++){
			
			for(int j = 0;j < l;j++){
				
				B[k][j] = Integer.parseInt(sc.next());
			}
		}
		
		//C行列の計算
		for(int k = 0;k < m;k++){
			
			for(int i = 0;i < n;i++){
				
				for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}
		
		//出力処理
		for(int i = 0;i < n;i++){
			
				output = "";
				
				for(int j = 0;j < l;j++){
					
					output += C[i][j];
					//数字の間にスペースを入れる
					if(j < l - 1)output += " ";
				}
				
				System.out.print(output + "\n");
				
		}
		
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int 
			 	n n m m l; l long[][]
				A A B B C; C String output; output n = Integer.parseInt(sc.next()) n Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc m = Integer.parseInt(sc.next()) m Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc l = Integer.parseInt(sc.next()) l Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc A = new long[n][m] A new long[n][m] n m B = new long[m][l] B new long[m][l] m l C = new long[n][l] C new long[n][l] n l for(int i = 0;i < n;i++){
			
			for(int k = 0;k < m;k++){
				
				A[i][k] = Integer.parseInt(sc.next());
			}
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			
			for(int k = 0;k < m;k++){
				
				A[i][k] = Integer.parseInt(sc.next());
			}
		} {
			
			for(int k = 0;k < m;k++){
				
				A[i][k] = Integer.parseInt(sc.next());
			}
		} for(int k = 0;k < m;k++){
				
				A[i][k] = Integer.parseInt(sc.next());
			} int k = 0; int k = 0; k 0 k < m k m k++ k++ k {
				
				A[i][k] = Integer.parseInt(sc.next());
			} {
				
				A[i][k] = Integer.parseInt(sc.next());
			} A[i][k] = Integer.parseInt(sc.next()) A[i][k] A[i] A i k Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc for(int k = 0;k < m;k++){
			
			for(int j = 0;j < l;j++){
				
				B[k][j] = Integer.parseInt(sc.next());
			}
		} int k = 0; int k = 0; k 0 k < m k m k++ k++ k {
			
			for(int j = 0;j < l;j++){
				
				B[k][j] = Integer.parseInt(sc.next());
			}
		} {
			
			for(int j = 0;j < l;j++){
				
				B[k][j] = Integer.parseInt(sc.next());
			}
		} for(int j = 0;j < l;j++){
				
				B[k][j] = Integer.parseInt(sc.next());
			} int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
				
				B[k][j] = Integer.parseInt(sc.next());
			} {
				
				B[k][j] = Integer.parseInt(sc.next());
			} B[k][j] = Integer.parseInt(sc.next()) B[k][j] B[k] B k j Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc for(int k = 0;k < m;k++){
			
			for(int i = 0;i < n;i++){
				
				for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		} int k = 0; int k = 0; k 0 k < m k m k++ k++ k {
			
			for(int i = 0;i < n;i++){
				
				for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		} {
			
			for(int i = 0;i < n;i++){
				
				for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		} for(int i = 0;i < n;i++){
				
				for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				}
			} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
				
				for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				}
			} {
				
				for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				}
			} for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				} int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
					
					C[i][j] += A[i][k] * B[k][j];
				} {
					
					C[i][j] += A[i][k] * B[k][j];
				} C[i][j] += A[i][k] * B[k][j] C[i][j] C[i] C i j A[i][k] * B[k][j] A[i][k] A[i] A i k B[k][j] B[k] B k j for(int i = 0;i < n;i++){
			
				output = "";
				
				for(int j = 0;j < l;j++){
					
					output += C[i][j];
					//数字の間にスペースを入れる
					if(j < l - 1)output += " ";
				}
				
				System.out.print(output + "\n");
				
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			
				output = "";
				
				for(int j = 0;j < l;j++){
					
					output += C[i][j];
					//数字の間にスペースを入れる
					if(j < l - 1)output += " ";
				}
				
				System.out.print(output + "\n");
				
		} {
			
				output = "";
				
				for(int j = 0;j < l;j++){
					
					output += C[i][j];
					//数字の間にスペースを入れる
					if(j < l - 1)output += " ";
				}
				
				System.out.print(output + "\n");
				
		} output = "" output "" for(int j = 0;j < l;j++){
					
					output += C[i][j];
					//数字の間にスペースを入れる
					if(j < l - 1)output += " ";
				} int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
					
					output += C[i][j];
					//数字の間にスペースを入れる
					if(j < l - 1)output += " ";
				} {
					
					output += C[i][j];
					//数字の間にスペースを入れる
					if(j < l - 1)output += " ";
				} output += C[i][j] output C[i][j] C[i] C i j if(j < l - 1)output += " "; j < l - 1 j l - 1 l 1 output += " " output " " System.out.print(output + "\n") System.out.print System.out System System.out output + "\n" output "\n" String args[] args
import java.util.Scanner;

class Main{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		
		int 
			 	n,
				m,
				l;
				
		long[][]
				A,
				B,
				C;
				
		String output;
		
		//入力処理
		n = Integer.parseInt(sc.next());
		m = Integer.parseInt(sc.next());
		l = Integer.parseInt(sc.next());
		
		//サイズの指定
		A = new long[n][m];
		B = new long[m][l];
		C = new long[n][l];
		
		//A行列の入力
		for(int i = 0;i < n;i++){
			
			for(int k = 0;k < m;k++){
				
				A[i][k] = Integer.parseInt(sc.next());
			}
		}
		
		//B行列の入力
		for(int k = 0;k < m;k++){
			
			for(int j = 0;j < l;j++){
				
				B[k][j] = Integer.parseInt(sc.next());
			}
		}
		
		//C行列の計算
		for(int k = 0;k < m;k++){
			
			for(int i = 0;i < n;i++){
				
				for(int j = 0;j < l;j++){
					
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}
		
		//出力処理
		for(int i = 0;i < n;i++){
			
				output = "";
				
				for(int j = 0;j < l;j++){
					
					output += C[i][j];
					//数字の間にスペースを入れる
					if(j < l - 1)output += " ";
				}
				
				System.out.print(output + "\n");
				
		}
		
	}
}

