import java.util.*;

public class Main{
	public static void main(String[] args){

		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int m = scan.nextInt();
		int l = scan.nextInt();
		int[][] vectorA = new int[n][m];
		int[][] vectorB = new int[m][l];
		long[][] vectorC = new long[n][l];
		for(int i = 0; i < n; i++){
			for(int j = 0; j < m; j++){
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			}
		}
		for(int i = 0; i < m; i++){
			for(int j = 0; j < l; j++){
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			}
		}

		for(int i = 0; i < n; i++){
			for(int j = 0; j < l; j++){
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			}
		}
	}
} import java.util.*; util.* java public class Main{
	public static void main(String[] args){

		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int m = scan.nextInt();
		int l = scan.nextInt();
		int[][] vectorA = new int[n][m];
		int[][] vectorB = new int[m][l];
		long[][] vectorC = new long[n][l];
		for(int i = 0; i < n; i++){
			for(int j = 0; j < m; j++){
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			}
		}
		for(int i = 0; i < m; i++){
			for(int j = 0; j < l; j++){
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			}
		}

		for(int i = 0; i < n; i++){
			for(int j = 0; j < l; j++){
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			}
		}
	}
} Main public static void main(String[] args){

		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int m = scan.nextInt();
		int l = scan.nextInt();
		int[][] vectorA = new int[n][m];
		int[][] vectorB = new int[m][l];
		long[][] vectorC = new long[n][l];
		for(int i = 0; i < n; i++){
			for(int j = 0; j < m; j++){
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			}
		}
		for(int i = 0; i < m; i++){
			for(int j = 0; j < l; j++){
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			}
		}

		for(int i = 0; i < n; i++){
			for(int j = 0; j < l; j++){
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			}
		}
	} main {

		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int m = scan.nextInt();
		int l = scan.nextInt();
		int[][] vectorA = new int[n][m];
		int[][] vectorB = new int[m][l];
		long[][] vectorC = new long[n][l];
		for(int i = 0; i < n; i++){
			for(int j = 0; j < m; j++){
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			}
		}
		for(int i = 0; i < m; i++){
			for(int j = 0; j < l; j++){
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			}
		}

		for(int i = 0; i < n; i++){
			for(int j = 0; j < l; j++){
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			}
		}
	} Scanner scan = new Scanner(System.in); scan new Scanner(System.in) int n = scan.nextInt(); n scan.nextInt() scan.nextInt scan int m = scan.nextInt(); m scan.nextInt() scan.nextInt scan int l = scan.nextInt(); l scan.nextInt() scan.nextInt scan int[][] vectorA = new int[n][m]; vectorA new int[n][m] n m int[][] vectorB = new int[m][l]; vectorB new int[m][l] m l long[][] vectorC = new long[n][l]; vectorC new long[n][l] n l for(int i = 0; i < n; i++){
			for(int j = 0; j < m; j++){
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			}
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			for(int j = 0; j < m; j++){
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			}
		} {
			for(int j = 0; j < m; j++){
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			}
		} for(int j = 0; j < m; j++){
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			} int j = 0; int j = 0; j 0 j < m j m j++ j++ j {
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			} {
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			} int elm =scan.nextInt(); elm scan.nextInt() scan.nextInt scan vectorA[i][j] = elm vectorA[i][j] vectorA[i] vectorA i j elm for(int i = 0; i < m; i++){
			for(int j = 0; j < l; j++){
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			}
		} int i = 0; int i = 0; i 0 i < m i m i++ i++ i {
			for(int j = 0; j < l; j++){
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			}
		} {
			for(int j = 0; j < l; j++){
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			}
		} for(int j = 0; j < l; j++){
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			} int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			} {
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			} int elm = scan.nextInt(); elm scan.nextInt() scan.nextInt scan vectorB[i][j] = elm vectorB[i][j] vectorB[i] vectorB i j elm for(int i = 0; i < n; i++){
			for(int j = 0; j < l; j++){
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			}
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			for(int j = 0; j < l; j++){
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			}
		} {
			for(int j = 0; j < l; j++){
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			}
		} for(int j = 0; j < l; j++){
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			} int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			} {
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			} long ans = 0; ans 0 for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				} int k = 0; int k = 0; k 0 k < m k m k++ k++ k {
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				} {
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				} ans += (long) vectorA[i][k] * (long) vectorB[k][j] ans (long) vectorA[i][k] * (long) vectorB[k][j] (long) vectorA[i][k] vectorA[i] vectorA i k (long) vectorB[k][j] vectorB[k] vectorB k j vectorC[i][j] = ans vectorC[i][j] vectorC[i] vectorC i j ans System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]) System.out.printf System.out System System.out j != l - 1? "%d " : "%d\n" j != l - 1 j l - 1 l 1 "%d " "%d\n" vectorC[i][j] vectorC[i] vectorC i j String[] args args public class Main{
	public static void main(String[] args){

		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int m = scan.nextInt();
		int l = scan.nextInt();
		int[][] vectorA = new int[n][m];
		int[][] vectorB = new int[m][l];
		long[][] vectorC = new long[n][l];
		for(int i = 0; i < n; i++){
			for(int j = 0; j < m; j++){
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			}
		}
		for(int i = 0; i < m; i++){
			for(int j = 0; j < l; j++){
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			}
		}

		for(int i = 0; i < n; i++){
			for(int j = 0; j < l; j++){
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			}
		}
	}
} public class Main{
	public static void main(String[] args){

		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int m = scan.nextInt();
		int l = scan.nextInt();
		int[][] vectorA = new int[n][m];
		int[][] vectorB = new int[m][l];
		long[][] vectorC = new long[n][l];
		for(int i = 0; i < n; i++){
			for(int j = 0; j < m; j++){
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			}
		}
		for(int i = 0; i < m; i++){
			for(int j = 0; j < l; j++){
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			}
		}

		for(int i = 0; i < n; i++){
			for(int j = 0; j < l; j++){
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			}
		}
	}
} Main
import java.util.*;

public class Main{
	public static void main(String[] args){

		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int m = scan.nextInt();
		int l = scan.nextInt();
		int[][] vectorA = new int[n][m];
		int[][] vectorB = new int[m][l];
		long[][] vectorC = new long[n][l];
		for(int i = 0; i < n; i++){
			for(int j = 0; j < m; j++){
				int elm =scan.nextInt();
				vectorA[i][j] = elm;
			}
		}
		for(int i = 0; i < m; i++){
			for(int j = 0; j < l; j++){
				int elm = scan.nextInt();
				vectorB[i][j] = elm;
			}
		}

		for(int i = 0; i < n; i++){
			for(int j = 0; j < l; j++){
				long ans = 0;
				for(int k = 0; k < m; k++){
					ans += (long) vectorA[i][k] * (long) vectorB[k][j];
					
				}
				vectorC[i][j] = ans;
				System.out.printf(j != l - 1? "%d " : "%d\n", vectorC[i][j]);
			}
		}
	}
}