import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

		// A,B,C?????????????????¨???????±?????????????
		String first_line = input.readLine();

		// ??\??????????´?
		String[] array_of_lo_col = first_line.split(" ");

		// ??????A,C?????????????????????
		int low_n = Integer.parseInt(array_of_lo_col[0]);

		// ??????A???????????????B?????????????????????
		int column_or_row_m = Integer.parseInt(array_of_lo_col[1]);

		// ??????B,C?????????????????????
		int column_l = Integer.parseInt(array_of_lo_col[2]);

		// ??????A???????¬??????????
		long[][] matrix_A = new long[low_n][column_or_row_m];

		// ??????B???????¬??????????
		long[][] matrix_B = new long[column_or_row_m][column_l];

		// ??????C???????¬??????????
		long[][] matrix_C = new long[low_n][column_l];

		// ??????C???Ci???????????¨?????????A?????\??????????????°??????????´?
		for (int low_spot = 0; low_spot < low_n; low_spot++) {

			// ??????A???????´???\???
			String elements_A = input.readLine();

			// ??\??????????????????A???????´????array_elements_A???????´?
			String[] array_elements_A = elements_A.split(" ");

			// ??????A???????´????????´?
			for (int column_spot = 0; column_spot < column_or_row_m; column_spot++) {

				// array_elements_A???????´????????????°??????long??????
				long element_A = Long.parseLong(array_elements_A[column_spot]);

				// ????´??????????A???????´?
				matrix_A[low_spot][column_spot] = element_A;

			}

		}

		// ??????C???Ci???????????¨?????????B?????\??????????????°??????????´?
		for (int low_spot = 0; low_spot < column_or_row_m; low_spot++) {

			// ??????B???????´???\???
			String elements_B = input.readLine();

			// ??\??????????????????B???????´????array_elements_A???????´?
			String[] array_elements_B = elements_B.split(" ");

			// ??????B???????´????????´?
			for (int column_spot = 0; column_spot < column_l; column_spot++) {

				// array_elements_B???????´????????????°??????long??????
				long element_B = Long.parseLong(array_elements_B[column_spot]);

				// ????´??????????B???????´?
				matrix_B[low_spot][column_spot] = element_B;

			}

		}

		// C?????????????´???¨
		long Ci = 0;

		// ??????C???????´?
		for (int low_spot = 0; low_spot < low_n; low_spot++) {

			// ??????C?????????????´?
			for (int column_spot = 0; column_spot < column_l; column_spot++) {

				// C?????????????´????A????????¨B?????????????????????
				for (int m_term = 0; m_term < column_or_row_m; m_term++) {


					// Ci???????´??????????matrixA,B?????????????¶?????????????
					Ci += matrix_A[low_spot][m_term] * matrix_B[m_term][column_spot];

				}


				// ????´?C???Ci???????´?
				matrix_C[low_spot][column_spot] = Ci;

				// ??????
				System.out.print(matrix_C[low_spot][column_spot]);

				//AOJ???????????¨
				int remove_blank_last=column_l-1;

				//???????????????????´????????????????????¶??????????
				if(column_spot < remove_blank_last){

				System.out.print(" ");

				}

				//Ci????????????
				Ci=0;

			}

			// ????????????
			System.out.println("");

		}

	}

}
/tmp/hf-datasets-cache/medium/datasets/42704881117311-config-parquet-and-info-qiankunmu-Project_CodeNet-896c9d36/hub/datasets--qiankunmu--Project_CodeNet_Python800_and_Java250/snapshots/c899fde44a77ba1cc14973ed3de064e4ff3aadc7/Project_CodeNet_Java250.tar.gz