public class Main {

	public static void main(String[] args) {
		// TODO ?????????????????????????????????????????????
		java.util.Scanner sc = new java.util.Scanner(System.in);

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		sc.nextLine(); // nextInt()??????????????£?????????"\n"????¶????????????????

		int[][] A = new int[n][m];
		int[][] B = new int[m][l];
		long[][] C = new long[n][l];

		for (int i=0; i < n; i++) {

			String[] data = sc.nextLine().split(" ");

			for (int j=0; j < m; j++) {
				A[i][j] = Integer.parseInt(data[j]);
			}

		}

		for (int j=0; j < m; j++) {

			String[] data = sc.nextLine().split(" ");

			for (int k=0; k < l; k++) {
				B[j][k] = Integer.parseInt(data[k]);
			}

		}

		// C[i][k] = sigma(j : 0 -> m) A[i][j] * B[j][k]

		for (int i=0; i < n; i++) {

			for (int k=0; k < l; k++) {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			}

		}

		for (int i=0; i < n; i++) {
			for (int k=0; k < l-1; k++) {
				System.out.print(C[i][k] + " ");
			}
			System.out.println(C[i][l-1]);
		}

	}

} public class Main {

	public static void main(String[] args) {
		// TODO ?????????????????????????????????????????????
		java.util.Scanner sc = new java.util.Scanner(System.in);

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		sc.nextLine(); // nextInt()??????????????£?????????"\n"????¶????????????????

		int[][] A = new int[n][m];
		int[][] B = new int[m][l];
		long[][] C = new long[n][l];

		for (int i=0; i < n; i++) {

			String[] data = sc.nextLine().split(" ");

			for (int j=0; j < m; j++) {
				A[i][j] = Integer.parseInt(data[j]);
			}

		}

		for (int j=0; j < m; j++) {

			String[] data = sc.nextLine().split(" ");

			for (int k=0; k < l; k++) {
				B[j][k] = Integer.parseInt(data[k]);
			}

		}

		// C[i][k] = sigma(j : 0 -> m) A[i][j] * B[j][k]

		for (int i=0; i < n; i++) {

			for (int k=0; k < l; k++) {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			}

		}

		for (int i=0; i < n; i++) {
			for (int k=0; k < l-1; k++) {
				System.out.print(C[i][k] + " ");
			}
			System.out.println(C[i][l-1]);
		}

	}

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

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		sc.nextLine(); // nextInt()??????????????£?????????"\n"????¶????????????????

		int[][] A = new int[n][m];
		int[][] B = new int[m][l];
		long[][] C = new long[n][l];

		for (int i=0; i < n; i++) {

			String[] data = sc.nextLine().split(" ");

			for (int j=0; j < m; j++) {
				A[i][j] = Integer.parseInt(data[j]);
			}

		}

		for (int j=0; j < m; j++) {

			String[] data = sc.nextLine().split(" ");

			for (int k=0; k < l; k++) {
				B[j][k] = Integer.parseInt(data[k]);
			}

		}

		// C[i][k] = sigma(j : 0 -> m) A[i][j] * B[j][k]

		for (int i=0; i < n; i++) {

			for (int k=0; k < l; k++) {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			}

		}

		for (int i=0; i < n; i++) {
			for (int k=0; k < l-1; k++) {
				System.out.print(C[i][k] + " ");
			}
			System.out.println(C[i][l-1]);
		}

	} main {
		// TODO ?????????????????????????????????????????????
		java.util.Scanner sc = new java.util.Scanner(System.in);

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		sc.nextLine(); // nextInt()??????????????£?????????"\n"????¶????????????????

		int[][] A = new int[n][m];
		int[][] B = new int[m][l];
		long[][] C = new long[n][l];

		for (int i=0; i < n; i++) {

			String[] data = sc.nextLine().split(" ");

			for (int j=0; j < m; j++) {
				A[i][j] = Integer.parseInt(data[j]);
			}

		}

		for (int j=0; j < m; j++) {

			String[] data = sc.nextLine().split(" ");

			for (int k=0; k < l; k++) {
				B[j][k] = Integer.parseInt(data[k]);
			}

		}

		// C[i][k] = sigma(j : 0 -> m) A[i][j] * B[j][k]

		for (int i=0; i < n; i++) {

			for (int k=0; k < l; k++) {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			}

		}

		for (int i=0; i < n; i++) {
			for (int k=0; k < l-1; k++) {
				System.out.print(C[i][k] + " ");
			}
			System.out.println(C[i][l-1]);
		}

	} java.util.Scanner sc = new java.util.Scanner(System.in); sc new java.util.Scanner(System.in) 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 sc.nextLine() sc.nextLine 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 for (int i=0; i < n; i++) {

			String[] data = sc.nextLine().split(" ");

			for (int j=0; j < m; j++) {
				A[i][j] = Integer.parseInt(data[j]);
			}

		} int i=0; int i=0; i 0 i < n i n i++ i++ i {

			String[] data = sc.nextLine().split(" ");

			for (int j=0; j < m; j++) {
				A[i][j] = Integer.parseInt(data[j]);
			}

		} {

			String[] data = sc.nextLine().split(" ");

			for (int j=0; j < m; j++) {
				A[i][j] = Integer.parseInt(data[j]);
			}

		} String[] data = sc.nextLine().split(" "); data sc.nextLine().split(" ") sc.nextLine().split sc.nextLine() sc.nextLine sc " " for (int j=0; j < m; j++) {
				A[i][j] = Integer.parseInt(data[j]);
			} int j=0; int j=0; j 0 j < m j m j++ j++ j {
				A[i][j] = Integer.parseInt(data[j]);
			} {
				A[i][j] = Integer.parseInt(data[j]);
			} A[i][j] = Integer.parseInt(data[j]) A[i][j] A[i] A i j Integer.parseInt(data[j]) Integer.parseInt Integer data[j] data j for (int j=0; j < m; j++) {

			String[] data = sc.nextLine().split(" ");

			for (int k=0; k < l; k++) {
				B[j][k] = Integer.parseInt(data[k]);
			}

		} int j=0; int j=0; j 0 j < m j m j++ j++ j {

			String[] data = sc.nextLine().split(" ");

			for (int k=0; k < l; k++) {
				B[j][k] = Integer.parseInt(data[k]);
			}

		} {

			String[] data = sc.nextLine().split(" ");

			for (int k=0; k < l; k++) {
				B[j][k] = Integer.parseInt(data[k]);
			}

		} String[] data = sc.nextLine().split(" "); data sc.nextLine().split(" ") sc.nextLine().split sc.nextLine() sc.nextLine sc " " for (int k=0; k < l; k++) {
				B[j][k] = Integer.parseInt(data[k]);
			} int k=0; int k=0; k 0 k < l k l k++ k++ k {
				B[j][k] = Integer.parseInt(data[k]);
			} {
				B[j][k] = Integer.parseInt(data[k]);
			} B[j][k] = Integer.parseInt(data[k]) B[j][k] B[j] B j k Integer.parseInt(data[k]) Integer.parseInt Integer data[k] data k for (int i=0; i < n; i++) {

			for (int k=0; k < l; k++) {

				for (int j=0; j < m; j++) {
					C[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 k=0; k < l; k++) {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			}

		} {

			for (int k=0; k < l; k++) {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			}

		} for (int k=0; k < l; k++) {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			} int k=0; int k=0; k 0 k < l k l k++ k++ k {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			} {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			} for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				} int j=0; int j=0; j 0 j < m j m j++ j++ j {
					C[i][k] += A[i][j] * B[j][k];
				} {
					C[i][k] += A[i][j] * B[j][k];
				} C[i][k] += A[i][j] * B[j][k] C[i][k] C[i] C 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 k=0; k < l-1; k++) {
				System.out.print(C[i][k] + " ");
			}
			System.out.println(C[i][l-1]);
		} int i=0; int i=0; i 0 i < n i n i++ i++ i {
			for (int k=0; k < l-1; k++) {
				System.out.print(C[i][k] + " ");
			}
			System.out.println(C[i][l-1]);
		} {
			for (int k=0; k < l-1; k++) {
				System.out.print(C[i][k] + " ");
			}
			System.out.println(C[i][l-1]);
		} for (int k=0; k < l-1; k++) {
				System.out.print(C[i][k] + " ");
			} int k=0; int k=0; k 0 k < l-1 k l-1 l 1 k++ k++ k {
				System.out.print(C[i][k] + " ");
			} {
				System.out.print(C[i][k] + " ");
			} System.out.print(C[i][k] + " ") System.out.print System.out System System.out C[i][k] + " " C[i][k] C[i] C i k " " System.out.println(C[i][l-1]) System.out.println System.out System System.out C[i][l-1] C[i] C i l-1 l 1 String[] args args public class Main {

	public static void main(String[] args) {
		// TODO ?????????????????????????????????????????????
		java.util.Scanner sc = new java.util.Scanner(System.in);

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		sc.nextLine(); // nextInt()??????????????£?????????"\n"????¶????????????????

		int[][] A = new int[n][m];
		int[][] B = new int[m][l];
		long[][] C = new long[n][l];

		for (int i=0; i < n; i++) {

			String[] data = sc.nextLine().split(" ");

			for (int j=0; j < m; j++) {
				A[i][j] = Integer.parseInt(data[j]);
			}

		}

		for (int j=0; j < m; j++) {

			String[] data = sc.nextLine().split(" ");

			for (int k=0; k < l; k++) {
				B[j][k] = Integer.parseInt(data[k]);
			}

		}

		// C[i][k] = sigma(j : 0 -> m) A[i][j] * B[j][k]

		for (int i=0; i < n; i++) {

			for (int k=0; k < l; k++) {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			}

		}

		for (int i=0; i < n; i++) {
			for (int k=0; k < l-1; k++) {
				System.out.print(C[i][k] + " ");
			}
			System.out.println(C[i][l-1]);
		}

	}

} public class Main {

	public static void main(String[] args) {
		// TODO ?????????????????????????????????????????????
		java.util.Scanner sc = new java.util.Scanner(System.in);

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		sc.nextLine(); // nextInt()??????????????£?????????"\n"????¶????????????????

		int[][] A = new int[n][m];
		int[][] B = new int[m][l];
		long[][] C = new long[n][l];

		for (int i=0; i < n; i++) {

			String[] data = sc.nextLine().split(" ");

			for (int j=0; j < m; j++) {
				A[i][j] = Integer.parseInt(data[j]);
			}

		}

		for (int j=0; j < m; j++) {

			String[] data = sc.nextLine().split(" ");

			for (int k=0; k < l; k++) {
				B[j][k] = Integer.parseInt(data[k]);
			}

		}

		// C[i][k] = sigma(j : 0 -> m) A[i][j] * B[j][k]

		for (int i=0; i < n; i++) {

			for (int k=0; k < l; k++) {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			}

		}

		for (int i=0; i < n; i++) {
			for (int k=0; k < l-1; k++) {
				System.out.print(C[i][k] + " ");
			}
			System.out.println(C[i][l-1]);
		}

	}

} Main
public class Main {

	public static void main(String[] args) {
		// TODO ?????????????????????????????????????????????
		java.util.Scanner sc = new java.util.Scanner(System.in);

		int n = sc.nextInt();
		int m = sc.nextInt();
		int l = sc.nextInt();
		sc.nextLine(); // nextInt()??????????????£?????????"\n"????¶????????????????

		int[][] A = new int[n][m];
		int[][] B = new int[m][l];
		long[][] C = new long[n][l];

		for (int i=0; i < n; i++) {

			String[] data = sc.nextLine().split(" ");

			for (int j=0; j < m; j++) {
				A[i][j] = Integer.parseInt(data[j]);
			}

		}

		for (int j=0; j < m; j++) {

			String[] data = sc.nextLine().split(" ");

			for (int k=0; k < l; k++) {
				B[j][k] = Integer.parseInt(data[k]);
			}

		}

		// C[i][k] = sigma(j : 0 -> m) A[i][j] * B[j][k]

		for (int i=0; i < n; i++) {

			for (int k=0; k < l; k++) {

				for (int j=0; j < m; j++) {
					C[i][k] += A[i][j] * B[j][k];
				}

			}

		}

		for (int i=0; i < n; i++) {
			for (int k=0; k < l-1; k++) {
				System.out.print(C[i][k] + " ");
			}
			System.out.println(C[i][l-1]);
		}

	}

}