import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		int n, m, l, i, j, k, a, b;
		try (Scanner sc = new Scanner(System.in)) {
			n = sc.nextInt();
			m = sc.nextInt();
			l = sc.nextInt();
			int n_m[][] = new int[n][m];
			int m_l[][] = new int[m][l];
			long output[][] = new long[n][l]; //表の配列
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < m; i++) {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			}
		}
	}
}
 import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		int n, m, l, i, j, k, a, b;
		try (Scanner sc = new Scanner(System.in)) {
			n = sc.nextInt();
			m = sc.nextInt();
			l = sc.nextInt();
			int n_m[][] = new int[n][m];
			int m_l[][] = new int[m][l];
			long output[][] = new long[n][l]; //表の配列
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < m; i++) {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			}
		}
	}
} Main public static void main(String[] args) {
		int n, m, l, i, j, k, a, b;
		try (Scanner sc = new Scanner(System.in)) {
			n = sc.nextInt();
			m = sc.nextInt();
			l = sc.nextInt();
			int n_m[][] = new int[n][m];
			int m_l[][] = new int[m][l];
			long output[][] = new long[n][l]; //表の配列
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < m; i++) {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			}
		}
	} main {
		int n, m, l, i, j, k, a, b;
		try (Scanner sc = new Scanner(System.in)) {
			n = sc.nextInt();
			m = sc.nextInt();
			l = sc.nextInt();
			int n_m[][] = new int[n][m];
			int m_l[][] = new int[m][l];
			long output[][] = new long[n][l]; //表の配列
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < m; i++) {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			}
		}
	} int n n m m l l i i j j k k a a b; b try (Scanner sc = new Scanner(System.in)) {
			n = sc.nextInt();
			m = sc.nextInt();
			l = sc.nextInt();
			int n_m[][] = new int[n][m];
			int m_l[][] = new int[m][l];
			long output[][] = new long[n][l]; //表の配列
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < m; i++) {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			}
		} {
			n = sc.nextInt();
			m = sc.nextInt();
			l = sc.nextInt();
			int n_m[][] = new int[n][m];
			int m_l[][] = new int[m][l];
			long output[][] = new long[n][l]; //表の配列
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < m; i++) {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			}
		} Scanner sc = new Scanner(System.in) Scanner sc = new Scanner(System.in) new Scanner(System.in) n = sc.nextInt() n sc.nextInt() sc.nextInt sc m = sc.nextInt() m sc.nextInt() sc.nextInt sc l = sc.nextInt() l sc.nextInt() sc.nextInt sc int n_m[][] = new int[n][m]; n_m new int[n][m] n m int m_l[][] = new int[m][l]; m_l new int[m][l] m l long output[][] = new long[n][l]; output new long[n][l] n l for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			} i = 0; i = 0 i 0 i < n i n i++ i++ i {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			} {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			} for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				} j = 0; j = 0 j 0 j < m j m j++ j++ j {
					n_m[i][j] = sc.nextInt();
				} {
					n_m[i][j] = sc.nextInt();
				} n_m[i][j] = sc.nextInt() n_m[i][j] n_m[i] n_m i j sc.nextInt() sc.nextInt sc for(i = 0; i < m; i++) {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			} i = 0; i = 0 i 0 i < m i m i++ i++ i {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			} {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			} for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				} j = 0; j = 0 j 0 j < l j l j++ j++ j {
					m_l[i][j] = sc.nextInt();
				} {
					m_l[i][j] = sc.nextInt();
				} m_l[i][j] = sc.nextInt() m_l[i][j] m_l[i] m_l i j sc.nextInt() sc.nextInt sc for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			} i = 0; i = 0 i 0 i < n i n i++ i++ i {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			} {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			} for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				} j = 0; j = 0 j 0 j < m j m j++ j++ j {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				} {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				} for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					} k = 0; k = 0 k 0 k < l k l k++ k++ k {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					} {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					} output[i][k] += n_m[i][j] * m_l[j][k] output[i][k] output[i] output i k n_m[i][j] * m_l[j][k] n_m[i][j] n_m[i] n_m i j m_l[j][k] m_l[j] m_l j k if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						} j == m - 1 j m - 1 m 1 {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						} if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							} k < l - 1 k l - 1 l 1 {
								System.out.print(output[i][k] + " ");
							} System.out.print(output[i][k] + " ") System.out.print System.out System System.out output[i][k] + " " output[i][k] output[i] output i k " " {
								System.out.println(output[i][k]);
							} System.out.println(output[i][k]) System.out.println System.out System System.out output[i][k] output[i] output i k String[] args args public class Main {
	public static void main(String[] args) {
		int n, m, l, i, j, k, a, b;
		try (Scanner sc = new Scanner(System.in)) {
			n = sc.nextInt();
			m = sc.nextInt();
			l = sc.nextInt();
			int n_m[][] = new int[n][m];
			int m_l[][] = new int[m][l];
			long output[][] = new long[n][l]; //表の配列
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < m; i++) {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			}
		}
	}
} public class Main {
	public static void main(String[] args) {
		int n, m, l, i, j, k, a, b;
		try (Scanner sc = new Scanner(System.in)) {
			n = sc.nextInt();
			m = sc.nextInt();
			l = sc.nextInt();
			int n_m[][] = new int[n][m];
			int m_l[][] = new int[m][l];
			long output[][] = new long[n][l]; //表の配列
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < m; i++) {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			}
		}
	}
} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		int n, m, l, i, j, k, a, b;
		try (Scanner sc = new Scanner(System.in)) {
			n = sc.nextInt();
			m = sc.nextInt();
			l = sc.nextInt();
			int n_m[][] = new int[n][m];
			int m_l[][] = new int[m][l];
			long output[][] = new long[n][l]; //表の配列
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					n_m[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < m; i++) {
				for(j = 0; j < l; j++) {
					m_l[i][j] = sc.nextInt();
				}
			}
			for(i = 0; i < n; i++) {
				for(j = 0; j < m; j++) {
					for(k = 0; k < l; k++) {
						output[i][k] += n_m[i][j] * m_l[j][k];
						if(j == m - 1) {
							if(k < l - 1) {
								System.out.print(output[i][k] + " ");
							}else {
								System.out.println(output[i][k]);
							}
						}
					}
				}
			}
		}
	}
}

