import java.util.Scanner;

public class Main{

	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int l = Integer.parseInt(sc.next());
		
		
		long[][] a = new long[n][m];
		long[][] b = new long[m][l];
		long[][] answer = new long [n][l];
		
			
		for(int i = 0;i<n;i++){
			
			for(int j= 0;j<m;j++){
				
				a[i][j] = Long.parseLong(sc.next());
				
			}
		}
		
		for(int i =0;i<m;i++){
			
			for(int j =0;j<l;j++){
				
				b[i][j] = Long.parseLong(sc.next());
			}
		}
		
		
		for(int i = 0; i<n;i++){
			
			for(int j=0; j<m;j++){
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			}
		}
		
		for(int i = 0; i<n;i++){
			
			for(int j =0;j<l;j++){
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			}
			
			
		}
		
		sc.close();
	}
	

}
 import java.util.Scanner; Scanner java.util public class Main{

	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int l = Integer.parseInt(sc.next());
		
		
		long[][] a = new long[n][m];
		long[][] b = new long[m][l];
		long[][] answer = new long [n][l];
		
			
		for(int i = 0;i<n;i++){
			
			for(int j= 0;j<m;j++){
				
				a[i][j] = Long.parseLong(sc.next());
				
			}
		}
		
		for(int i =0;i<m;i++){
			
			for(int j =0;j<l;j++){
				
				b[i][j] = Long.parseLong(sc.next());
			}
		}
		
		
		for(int i = 0; i<n;i++){
			
			for(int j=0; j<m;j++){
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			}
		}
		
		for(int i = 0; i<n;i++){
			
			for(int j =0;j<l;j++){
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			}
			
			
		}
		
		sc.close();
	}
	

} Main public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int l = Integer.parseInt(sc.next());
		
		
		long[][] a = new long[n][m];
		long[][] b = new long[m][l];
		long[][] answer = new long [n][l];
		
			
		for(int i = 0;i<n;i++){
			
			for(int j= 0;j<m;j++){
				
				a[i][j] = Long.parseLong(sc.next());
				
			}
		}
		
		for(int i =0;i<m;i++){
			
			for(int j =0;j<l;j++){
				
				b[i][j] = Long.parseLong(sc.next());
			}
		}
		
		
		for(int i = 0; i<n;i++){
			
			for(int j=0; j<m;j++){
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			}
		}
		
		for(int i = 0; i<n;i++){
			
			for(int j =0;j<l;j++){
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			}
			
			
		}
		
		sc.close();
	} main {
		
		Scanner sc = new Scanner(System.in);
		
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int l = Integer.parseInt(sc.next());
		
		
		long[][] a = new long[n][m];
		long[][] b = new long[m][l];
		long[][] answer = new long [n][l];
		
			
		for(int i = 0;i<n;i++){
			
			for(int j= 0;j<m;j++){
				
				a[i][j] = Long.parseLong(sc.next());
				
			}
		}
		
		for(int i =0;i<m;i++){
			
			for(int j =0;j<l;j++){
				
				b[i][j] = Long.parseLong(sc.next());
			}
		}
		
		
		for(int i = 0; i<n;i++){
			
			for(int j=0; j<m;j++){
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			}
		}
		
		for(int i = 0; i<n;i++){
			
			for(int j =0;j<l;j++){
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			}
			
			
		}
		
		sc.close();
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = Integer.parseInt(sc.next()); n Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc int m = Integer.parseInt(sc.next()); m Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc int l = Integer.parseInt(sc.next()); l Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc long[][] a = new long[n][m]; a new long[n][m] n m long[][] b = new long[m][l]; b new long[m][l] m l long[][] answer = new long [n][l]; answer new long [n][l] n l for(int i = 0;i<n;i++){
			
			for(int j= 0;j<m;j++){
				
				a[i][j] = Long.parseLong(sc.next());
				
			}
		} int i = 0; int i = 0; i 0 i<n i n i++ i++ i {
			
			for(int j= 0;j<m;j++){
				
				a[i][j] = Long.parseLong(sc.next());
				
			}
		} {
			
			for(int j= 0;j<m;j++){
				
				a[i][j] = Long.parseLong(sc.next());
				
			}
		} for(int j= 0;j<m;j++){
				
				a[i][j] = Long.parseLong(sc.next());
				
			} int j= 0; int j= 0; j 0 j<m j m j++ j++ j {
				
				a[i][j] = Long.parseLong(sc.next());
				
			} {
				
				a[i][j] = Long.parseLong(sc.next());
				
			} a[i][j] = Long.parseLong(sc.next()) a[i][j] a[i] a i j Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc for(int i =0;i<m;i++){
			
			for(int j =0;j<l;j++){
				
				b[i][j] = Long.parseLong(sc.next());
			}
		} int i =0; int i =0; i 0 i<m i m i++ i++ i {
			
			for(int j =0;j<l;j++){
				
				b[i][j] = Long.parseLong(sc.next());
			}
		} {
			
			for(int j =0;j<l;j++){
				
				b[i][j] = Long.parseLong(sc.next());
			}
		} for(int j =0;j<l;j++){
				
				b[i][j] = Long.parseLong(sc.next());
			} int j =0; int j =0; j 0 j<l j l j++ j++ j {
				
				b[i][j] = Long.parseLong(sc.next());
			} {
				
				b[i][j] = Long.parseLong(sc.next());
			} b[i][j] = Long.parseLong(sc.next()) b[i][j] b[i] b i j Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc for(int i = 0; i<n;i++){
			
			for(int j=0; j<m;j++){
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			}
		} int i = 0; int i = 0; i 0 i<n i n i++ i++ i {
			
			for(int j=0; j<m;j++){
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			}
		} {
			
			for(int j=0; j<m;j++){
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			}
		} for(int j=0; j<m;j++){
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			} int j=0; int j=0; j 0 j<m j m j++ j++ j {
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			} {
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			} for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				} int k = 0; int k = 0; k 0 k<l k l k++ k++ k {
					
					answer[i][k] += a[i][j] * b[j][k];
					
				} {
					
					answer[i][k] += a[i][j] * b[j][k];
					
				} answer[i][k] += a[i][j] * b[j][k] answer[i][k] answer[i] answer i k a[i][j] * b[j][k] a[i][j] a[i] a i j b[j][k] b[j] b j k for(int i = 0; i<n;i++){
			
			for(int j =0;j<l;j++){
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			}
			
			
		} int i = 0; int i = 0; i 0 i<n i n i++ i++ i {
			
			for(int j =0;j<l;j++){
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			}
			
			
		} {
			
			for(int j =0;j<l;j++){
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			}
			
			
		} for(int j =0;j<l;j++){
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			} int j =0; int j =0; j 0 j<l j l j++ j++ j {
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			} {
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			} System.out.print(answer[i][j]) System.out.print System.out System System.out answer[i][j] answer[i] answer i j if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				} j ==l-1 j l-1 l 1 {
					System.out.print("\n");
				} System.out.print("\n") System.out.print System.out System System.out "\n" {
					System.out.print(" ");
				} System.out.print(" ") System.out.print System.out System System.out " " sc.close() sc.close sc String[] args args public class Main{

	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int l = Integer.parseInt(sc.next());
		
		
		long[][] a = new long[n][m];
		long[][] b = new long[m][l];
		long[][] answer = new long [n][l];
		
			
		for(int i = 0;i<n;i++){
			
			for(int j= 0;j<m;j++){
				
				a[i][j] = Long.parseLong(sc.next());
				
			}
		}
		
		for(int i =0;i<m;i++){
			
			for(int j =0;j<l;j++){
				
				b[i][j] = Long.parseLong(sc.next());
			}
		}
		
		
		for(int i = 0; i<n;i++){
			
			for(int j=0; j<m;j++){
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			}
		}
		
		for(int i = 0; i<n;i++){
			
			for(int j =0;j<l;j++){
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			}
			
			
		}
		
		sc.close();
	}
	

} public class Main{

	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int l = Integer.parseInt(sc.next());
		
		
		long[][] a = new long[n][m];
		long[][] b = new long[m][l];
		long[][] answer = new long [n][l];
		
			
		for(int i = 0;i<n;i++){
			
			for(int j= 0;j<m;j++){
				
				a[i][j] = Long.parseLong(sc.next());
				
			}
		}
		
		for(int i =0;i<m;i++){
			
			for(int j =0;j<l;j++){
				
				b[i][j] = Long.parseLong(sc.next());
			}
		}
		
		
		for(int i = 0; i<n;i++){
			
			for(int j=0; j<m;j++){
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			}
		}
		
		for(int i = 0; i<n;i++){
			
			for(int j =0;j<l;j++){
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			}
			
			
		}
		
		sc.close();
	}
	

} Main
import java.util.Scanner;

public class Main{

	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int l = Integer.parseInt(sc.next());
		
		
		long[][] a = new long[n][m];
		long[][] b = new long[m][l];
		long[][] answer = new long [n][l];
		
			
		for(int i = 0;i<n;i++){
			
			for(int j= 0;j<m;j++){
				
				a[i][j] = Long.parseLong(sc.next());
				
			}
		}
		
		for(int i =0;i<m;i++){
			
			for(int j =0;j<l;j++){
				
				b[i][j] = Long.parseLong(sc.next());
			}
		}
		
		
		for(int i = 0; i<n;i++){
			
			for(int j=0; j<m;j++){
				
				for(int k = 0; k<l;k++){
					
					answer[i][k] += a[i][j] * b[j][k];
					
				}
				
			}
		}
		
		for(int i = 0; i<n;i++){
			
			for(int j =0;j<l;j++){
				
				System.out.print(answer[i][j]);
				if(j ==l-1){
					System.out.print("\n");
				}else{
					System.out.print(" ");
				}
			}
			
			
		}
		
		sc.close();
	}
	

}

