import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();
		int L = sc.nextInt();
		long[][] A = new long[N][M];
		long[][] B = new long[M][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < M; j++) {
				A[i][j] = sc.nextLong();
			}
		}
		for(int i = 0; i < M; i++) {
			for(int j = 0; j < L; j++) {
				B[i][j] = sc.nextLong();
			}
		}

		// 行列の掛け算
		long[][] C = new long[N][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < L; j++) {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}

		for(int i = 0; i < N; i++) {
			System.out.print(C[i][0]);
			for(int j = 1; j < L; j++) {
				System.out.print(" " + C[i][j]);
			}
			System.out.println();
		}

		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 = sc.nextInt();
		int M = sc.nextInt();
		int L = sc.nextInt();
		long[][] A = new long[N][M];
		long[][] B = new long[M][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < M; j++) {
				A[i][j] = sc.nextLong();
			}
		}
		for(int i = 0; i < M; i++) {
			for(int j = 0; j < L; j++) {
				B[i][j] = sc.nextLong();
			}
		}

		// 行列の掛け算
		long[][] C = new long[N][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < L; j++) {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}

		for(int i = 0; i < N; i++) {
			System.out.print(C[i][0]);
			for(int j = 1; j < L; j++) {
				System.out.print(" " + C[i][j]);
			}
			System.out.println();
		}

		sc.close();
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();
		int L = sc.nextInt();
		long[][] A = new long[N][M];
		long[][] B = new long[M][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < M; j++) {
				A[i][j] = sc.nextLong();
			}
		}
		for(int i = 0; i < M; i++) {
			for(int j = 0; j < L; j++) {
				B[i][j] = sc.nextLong();
			}
		}

		// 行列の掛け算
		long[][] C = new long[N][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < L; j++) {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}

		for(int i = 0; i < N; i++) {
			System.out.print(C[i][0]);
			for(int j = 1; j < L; j++) {
				System.out.print(" " + C[i][j]);
			}
			System.out.println();
		}

		sc.close();
	} main {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();
		int L = sc.nextInt();
		long[][] A = new long[N][M];
		long[][] B = new long[M][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < M; j++) {
				A[i][j] = sc.nextLong();
			}
		}
		for(int i = 0; i < M; i++) {
			for(int j = 0; j < L; j++) {
				B[i][j] = sc.nextLong();
			}
		}

		// 行列の掛け算
		long[][] C = new long[N][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < L; j++) {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}

		for(int i = 0; i < N; i++) {
			System.out.print(C[i][0]);
			for(int j = 1; j < L; j++) {
				System.out.print(" " + C[i][j]);
			}
			System.out.println();
		}

		sc.close();
	} Scanner sc = new Scanner(System.in); sc new 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 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 for(int i = 0; i < N; i++) {
			for(int j = 0; j < M; j++) {
				A[i][j] = sc.nextLong();
			}
		} 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] = sc.nextLong();
			}
		} {
			for(int j = 0; j < M; j++) {
				A[i][j] = sc.nextLong();
			}
		} for(int j = 0; j < M; j++) {
				A[i][j] = sc.nextLong();
			} int j = 0; int j = 0; j 0 j < M j M j++ j++ j {
				A[i][j] = sc.nextLong();
			} {
				A[i][j] = sc.nextLong();
			} A[i][j] = sc.nextLong() A[i][j] A[i] A i j sc.nextLong() sc.nextLong sc for(int i = 0; i < M; i++) {
			for(int j = 0; j < L; j++) {
				B[i][j] = sc.nextLong();
			}
		} 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] = sc.nextLong();
			}
		} {
			for(int j = 0; j < L; j++) {
				B[i][j] = sc.nextLong();
			}
		} for(int j = 0; j < L; j++) {
				B[i][j] = sc.nextLong();
			} int j = 0; int j = 0; j 0 j < L j L j++ j++ j {
				B[i][j] = sc.nextLong();
			} {
				B[i][j] = sc.nextLong();
			} B[i][j] = sc.nextLong() B[i][j] B[i] B i j sc.nextLong() sc.nextLong sc long[][] C = new long[N][L]; C new long[N][L] N L for(int i = 0; i < N; i++) {
			for(int j = 0; j < L; j++) {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			for(int j = 0; j < L; j++) {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		} {
			for(int j = 0; j < L; j++) {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		} for(int j = 0; j < L; j++) {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			} int j = 0; int j = 0; j 0 j < L j L j++ j++ j {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			} {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			} for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				} int k = 0; int k = 0; k 0 k < M k M 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 < N; i++) {
			System.out.print(C[i][0]);
			for(int j = 1; j < L; j++) {
				System.out.print(" " + C[i][j]);
			}
			System.out.println();
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			System.out.print(C[i][0]);
			for(int j = 1; j < L; j++) {
				System.out.print(" " + C[i][j]);
			}
			System.out.println();
		} {
			System.out.print(C[i][0]);
			for(int j = 1; j < L; j++) {
				System.out.print(" " + C[i][j]);
			}
			System.out.println();
		} System.out.print(C[i][0]) System.out.print System.out System System.out C[i][0] C[i] C i 0 for(int j = 1; j < L; j++) {
				System.out.print(" " + C[i][j]);
			} int j = 1; int j = 1; j 1 j < L j L j++ j++ j {
				System.out.print(" " + C[i][j]);
			} {
				System.out.print(" " + C[i][j]);
			} System.out.print(" " + C[i][j]) System.out.print System.out System System.out " " + C[i][j] " " C[i][j] C[i] C i j System.out.println() System.out.println 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 = sc.nextInt();
		int M = sc.nextInt();
		int L = sc.nextInt();
		long[][] A = new long[N][M];
		long[][] B = new long[M][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < M; j++) {
				A[i][j] = sc.nextLong();
			}
		}
		for(int i = 0; i < M; i++) {
			for(int j = 0; j < L; j++) {
				B[i][j] = sc.nextLong();
			}
		}

		// 行列の掛け算
		long[][] C = new long[N][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < L; j++) {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}

		for(int i = 0; i < N; i++) {
			System.out.print(C[i][0]);
			for(int j = 1; j < L; j++) {
				System.out.print(" " + C[i][j]);
			}
			System.out.println();
		}

		sc.close();
	}
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();
		int L = sc.nextInt();
		long[][] A = new long[N][M];
		long[][] B = new long[M][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < M; j++) {
				A[i][j] = sc.nextLong();
			}
		}
		for(int i = 0; i < M; i++) {
			for(int j = 0; j < L; j++) {
				B[i][j] = sc.nextLong();
			}
		}

		// 行列の掛け算
		long[][] C = new long[N][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < L; j++) {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}

		for(int i = 0; i < N; i++) {
			System.out.print(C[i][0]);
			for(int j = 1; j < L; j++) {
				System.out.print(" " + C[i][j]);
			}
			System.out.println();
		}

		sc.close();
	}
} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();
		int L = sc.nextInt();
		long[][] A = new long[N][M];
		long[][] B = new long[M][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < M; j++) {
				A[i][j] = sc.nextLong();
			}
		}
		for(int i = 0; i < M; i++) {
			for(int j = 0; j < L; j++) {
				B[i][j] = sc.nextLong();
			}
		}

		// 行列の掛け算
		long[][] C = new long[N][L];
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < L; j++) {
				for(int k = 0; k < M; k++) {
					C[i][j] += A[i][k] * B[k][j];
				}
			}
		}

		for(int i = 0; i < N; i++) {
			System.out.print(C[i][0]);
			for(int j = 1; j < L; j++) {
				System.out.print(" " + C[i][j]);
			}
			System.out.println();
		}

		sc.close();
	}
}

