import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();
		int n, m, l;
		n = scan.nextInt();
		m = scan.nextInt();
		l = scan.nextInt();
		long[][] matA = new long[n][m];
		long[][] matB = new long[m][l];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				matA[i][j] = scan.nextInt();
			}
		}
		for (int j = 0; j < m; j++) {
			for (int k = 0; k < l; k++) {
				matB[j][k] = scan.nextInt();
			}
		}
		for (int i = 0; i < n; i++) {
			for (int k = 0; k < l; k++) {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			}
		}
		System.out.print(sb);
	}
} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();
		int n, m, l;
		n = scan.nextInt();
		m = scan.nextInt();
		l = scan.nextInt();
		long[][] matA = new long[n][m];
		long[][] matB = new long[m][l];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				matA[i][j] = scan.nextInt();
			}
		}
		for (int j = 0; j < m; j++) {
			for (int k = 0; k < l; k++) {
				matB[j][k] = scan.nextInt();
			}
		}
		for (int i = 0; i < n; i++) {
			for (int k = 0; k < l; k++) {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			}
		}
		System.out.print(sb);
	}
} Main public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();
		int n, m, l;
		n = scan.nextInt();
		m = scan.nextInt();
		l = scan.nextInt();
		long[][] matA = new long[n][m];
		long[][] matB = new long[m][l];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				matA[i][j] = scan.nextInt();
			}
		}
		for (int j = 0; j < m; j++) {
			for (int k = 0; k < l; k++) {
				matB[j][k] = scan.nextInt();
			}
		}
		for (int i = 0; i < n; i++) {
			for (int k = 0; k < l; k++) {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			}
		}
		System.out.print(sb);
	} main {
		Scanner scan = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();
		int n, m, l;
		n = scan.nextInt();
		m = scan.nextInt();
		l = scan.nextInt();
		long[][] matA = new long[n][m];
		long[][] matB = new long[m][l];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				matA[i][j] = scan.nextInt();
			}
		}
		for (int j = 0; j < m; j++) {
			for (int k = 0; k < l; k++) {
				matB[j][k] = scan.nextInt();
			}
		}
		for (int i = 0; i < n; i++) {
			for (int k = 0; k < l; k++) {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			}
		}
		System.out.print(sb);
	} Scanner scan = new Scanner(System.in); scan new Scanner(System.in) StringBuilder sb = new StringBuilder(); sb new StringBuilder() int n n m m l; l n = scan.nextInt() n scan.nextInt() scan.nextInt scan m = scan.nextInt() m scan.nextInt() scan.nextInt scan l = scan.nextInt() l scan.nextInt() scan.nextInt scan long[][] matA = new long[n][m]; matA new long[n][m] n m long[][] matB = new long[m][l]; matB new long[m][l] m l for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				matA[i][j] = scan.nextInt();
			}
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			for (int j = 0; j < m; j++) {
				matA[i][j] = scan.nextInt();
			}
		} {
			for (int j = 0; j < m; j++) {
				matA[i][j] = scan.nextInt();
			}
		} for (int j = 0; j < m; j++) {
				matA[i][j] = scan.nextInt();
			} int j = 0; int j = 0; j 0 j < m j m j++ j++ j {
				matA[i][j] = scan.nextInt();
			} {
				matA[i][j] = scan.nextInt();
			} matA[i][j] = scan.nextInt() matA[i][j] matA[i] matA i j scan.nextInt() scan.nextInt scan for (int j = 0; j < m; j++) {
			for (int k = 0; k < l; k++) {
				matB[j][k] = scan.nextInt();
			}
		} int j = 0; int j = 0; j 0 j < m j m j++ j++ j {
			for (int k = 0; k < l; k++) {
				matB[j][k] = scan.nextInt();
			}
		} {
			for (int k = 0; k < l; k++) {
				matB[j][k] = scan.nextInt();
			}
		} for (int k = 0; k < l; k++) {
				matB[j][k] = scan.nextInt();
			} int k = 0; int k = 0; k 0 k < l k l k++ k++ k {
				matB[j][k] = scan.nextInt();
			} {
				matB[j][k] = scan.nextInt();
			} matB[j][k] = scan.nextInt() matB[j][k] matB[j] matB j k scan.nextInt() scan.nextInt scan for (int i = 0; i < n; i++) {
			for (int k = 0; k < l; k++) {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			}
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			for (int k = 0; k < l; k++) {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			}
		} {
			for (int k = 0; k < l; k++) {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			}
		} for (int k = 0; k < l; k++) {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			} int k = 0; int k = 0; k 0 k < l k l k++ k++ k {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			} {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			} long c = 0; c 0 for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				} int j = 0; int j = 0; j 0 j < m j m j++ j++ j {
					c += matA[i][j] * matB[j][k];
				} {
					c += matA[i][j] * matB[j][k];
				} c += matA[i][j] * matB[j][k] c matA[i][j] * matB[j][k] matA[i][j] matA[i] matA i j matB[j][k] matB[j] matB j k if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				} k != l - 1 k l - 1 l 1 {
					sb.append(c + " ");
				} sb.append(c + " ") sb.append sb c + " " c " " {
					sb.append(c + "\n");
				} sb.append(c + "\n") sb.append sb c + "\n" c "\n" System.out.print(sb) System.out.print System.out System System.out sb String[] args args public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();
		int n, m, l;
		n = scan.nextInt();
		m = scan.nextInt();
		l = scan.nextInt();
		long[][] matA = new long[n][m];
		long[][] matB = new long[m][l];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				matA[i][j] = scan.nextInt();
			}
		}
		for (int j = 0; j < m; j++) {
			for (int k = 0; k < l; k++) {
				matB[j][k] = scan.nextInt();
			}
		}
		for (int i = 0; i < n; i++) {
			for (int k = 0; k < l; k++) {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			}
		}
		System.out.print(sb);
	}
} public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();
		int n, m, l;
		n = scan.nextInt();
		m = scan.nextInt();
		l = scan.nextInt();
		long[][] matA = new long[n][m];
		long[][] matB = new long[m][l];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				matA[i][j] = scan.nextInt();
			}
		}
		for (int j = 0; j < m; j++) {
			for (int k = 0; k < l; k++) {
				matB[j][k] = scan.nextInt();
			}
		}
		for (int i = 0; i < n; i++) {
			for (int k = 0; k < l; k++) {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			}
		}
		System.out.print(sb);
	}
} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();
		int n, m, l;
		n = scan.nextInt();
		m = scan.nextInt();
		l = scan.nextInt();
		long[][] matA = new long[n][m];
		long[][] matB = new long[m][l];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				matA[i][j] = scan.nextInt();
			}
		}
		for (int j = 0; j < m; j++) {
			for (int k = 0; k < l; k++) {
				matB[j][k] = scan.nextInt();
			}
		}
		for (int i = 0; i < n; i++) {
			for (int k = 0; k < l; k++) {
				long c = 0;
				for (int j = 0; j < m; j++) {
					c += matA[i][j] * matB[j][k];
				}
				if (k != l - 1) {
					sb.append(c + " ");
				} else {
					sb.append(c + "\n");
				}
			}
		}
		System.out.print(sb);
	}
}