import java.util.Scanner;

public class Main {

	static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		int[][] A = new int[n][m];
		int[][] b = new int[m][l];
		long[][] c = new long[n][l];

		A = inputMat(A);
		b = inputMat(b);

		vec_multi(A, b, c);
		sc.close();


	}

	public static int[][] inputMat(int[][] a) {
		int[][] mat = new int[a.length][a[0].length];

		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[0].length; j++) {
				mat[i][j] = sc.nextInt();
			}
		}

		return mat;
	}

	public static void vec_multi(int[][] a, int[][] b, long[][] c) {

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			}
		}

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			}
			System.out.println();
		}



	}


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

	static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		int[][] A = new int[n][m];
		int[][] b = new int[m][l];
		long[][] c = new long[n][l];

		A = inputMat(A);
		b = inputMat(b);

		vec_multi(A, b, c);
		sc.close();


	}

	public static int[][] inputMat(int[][] a) {
		int[][] mat = new int[a.length][a[0].length];

		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[0].length; j++) {
				mat[i][j] = sc.nextInt();
			}
		}

		return mat;
	}

	public static void vec_multi(int[][] a, int[][] b, long[][] c) {

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			}
		}

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			}
			System.out.println();
		}



	}


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

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		int[][] A = new int[n][m];
		int[][] b = new int[m][l];
		long[][] c = new long[n][l];

		A = inputMat(A);
		b = inputMat(b);

		vec_multi(A, b, c);
		sc.close();


	} main {

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		int[][] A = new int[n][m];
		int[][] b = new int[m][l];
		long[][] c = new long[n][l];

		A = inputMat(A);
		b = inputMat(b);

		vec_multi(A, b, c);
		sc.close();


	} int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc int m = sc.nextInt(); m sc.nextInt() sc.nextInt sc int l = sc.nextInt(); l sc.nextInt() sc.nextInt sc int[][] A = new int[n][m]; A new int[n][m] n m int[][] b = new int[m][l]; b new int[m][l] m l long[][] c = new long[n][l]; c new long[n][l] n l A = inputMat(A) A inputMat(A) inputMat A b = inputMat(b) b inputMat(b) inputMat b vec_multi(A, b, c) vec_multi A b c sc.close() sc.close sc String[] args args public static int[][] inputMat(int[][] a) {
		int[][] mat = new int[a.length][a[0].length];

		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[0].length; j++) {
				mat[i][j] = sc.nextInt();
			}
		}

		return mat;
	} inputMat {
		int[][] mat = new int[a.length][a[0].length];

		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[0].length; j++) {
				mat[i][j] = sc.nextInt();
			}
		}

		return mat;
	} int[][] mat = new int[a.length][a[0].length]; mat new int[a.length][a[0].length] a.length a a.length a[0].length a[0] a 0 a[0].length for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[0].length; j++) {
				mat[i][j] = sc.nextInt();
			}
		} int i = 0; int i = 0; i 0 i < a.length i a.length a a.length i++ i++ i {
			for (int j = 0; j < a[0].length; j++) {
				mat[i][j] = sc.nextInt();
			}
		} {
			for (int j = 0; j < a[0].length; j++) {
				mat[i][j] = sc.nextInt();
			}
		} for (int j = 0; j < a[0].length; j++) {
				mat[i][j] = sc.nextInt();
			} int j = 0; int j = 0; j 0 j < a[0].length j a[0].length a[0] a 0 a[0].length j++ j++ j {
				mat[i][j] = sc.nextInt();
			} {
				mat[i][j] = sc.nextInt();
			} mat[i][j] = sc.nextInt() mat[i][j] mat[i] mat i j sc.nextInt() sc.nextInt sc return mat; mat int[][] a a public static void vec_multi(int[][] a, int[][] b, long[][] c) {

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			}
		}

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			}
			System.out.println();
		}



	} vec_multi {

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			}
		}

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			}
			System.out.println();
		}



	} for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			}
		} int i = 0; int i = 0; i 0 i < c.length i c.length c c.length i++ i++ i {
			for (int j = 0; j < c[0].length; j++) {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			}
		} {
			for (int j = 0; j < c[0].length; j++) {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			}
		} for (int j = 0; j < c[0].length; j++) {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			} int j = 0; int j = 0; j 0 j < c[0].length j c[0].length c[0] c 0 c[0].length j++ j++ j {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			} {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			} for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				} int k = 0; int k = 0; k 0 k < b.length k b.length b b.length k++ k++ k {
					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 < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			}
			System.out.println();
		} int i = 0; int i = 0; i 0 i < c.length i c.length c c.length i++ i++ i {
			for (int j = 0; j < c[0].length; j++) {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			}
			System.out.println();
		} {
			for (int j = 0; j < c[0].length; j++) {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			}
			System.out.println();
		} for (int j = 0; j < c[0].length; j++) {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			} int j = 0; int j = 0; j 0 j < c[0].length j c[0].length c[0] c 0 c[0].length j++ j++ j {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			} {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			} System.out.print(c[i][j]) System.out.print System.out System System.out c[i][j] c[i] c i j if (j < c[0].length - 1) {
						System.out.print(" ");
					} j < c[0].length - 1 j c[0].length - 1 c[0].length c[0] c 0 c[0].length 1 {
						System.out.print(" ");
					} System.out.print(" ") System.out.print System.out System System.out " " System.out.println() System.out.println System.out System System.out int[][] a a int[][] b b long[][] c c public class Main {

	static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		int[][] A = new int[n][m];
		int[][] b = new int[m][l];
		long[][] c = new long[n][l];

		A = inputMat(A);
		b = inputMat(b);

		vec_multi(A, b, c);
		sc.close();


	}

	public static int[][] inputMat(int[][] a) {
		int[][] mat = new int[a.length][a[0].length];

		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[0].length; j++) {
				mat[i][j] = sc.nextInt();
			}
		}

		return mat;
	}

	public static void vec_multi(int[][] a, int[][] b, long[][] c) {

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			}
		}

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			}
			System.out.println();
		}



	}


} public class Main {

	static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		int[][] A = new int[n][m];
		int[][] b = new int[m][l];
		long[][] c = new long[n][l];

		A = inputMat(A);
		b = inputMat(b);

		vec_multi(A, b, c);
		sc.close();


	}

	public static int[][] inputMat(int[][] a) {
		int[][] mat = new int[a.length][a[0].length];

		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[0].length; j++) {
				mat[i][j] = sc.nextInt();
			}
		}

		return mat;
	}

	public static void vec_multi(int[][] a, int[][] b, long[][] c) {

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			}
		}

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			}
			System.out.println();
		}



	}


} Main
import java.util.Scanner;

public class Main {

	static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		int[][] A = new int[n][m];
		int[][] b = new int[m][l];
		long[][] c = new long[n][l];

		A = inputMat(A);
		b = inputMat(b);

		vec_multi(A, b, c);
		sc.close();


	}

	public static int[][] inputMat(int[][] a) {
		int[][] mat = new int[a.length][a[0].length];

		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[0].length; j++) {
				mat[i][j] = sc.nextInt();
			}
		}

		return mat;
	}

	public static void vec_multi(int[][] a, int[][] b, long[][] c) {

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				for (int k = 0; k < b.length; k++) {
					c[i][j] += a[i][k] * b[k][j];
				}
			}
		}

		for (int i = 0; i < c.length; i++) {
			for (int j = 0; j < c[0].length; j++) {
				System.out.print(c[i][j]);

					if (j < c[0].length - 1) {
						System.out.print(" ");
					}
			}
			System.out.println();
		}



	}


}

