public class Main {
	
	public void run(java.io.InputStream in, java.io.PrintStream out) {
		final java.util.Scanner sc = new java.util.Scanner(in);
		long[][] a;
		long[][] b;
		long[][] r;
		int n, m, l;

		n = sc.nextInt();
		m = sc.nextInt();
		l = sc.nextInt();
		a = new long[n][m];
		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();
		}
		
		r = new long[n][l];
		for (int i = 0; i < n; ++i)
		for (int j = 0; j < l; ++j) {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			}
		}
		
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < l; ++j) {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			}
		}
				
		sc.close();
	}

	public static void main(String[] args) {
		(new Main()).run(System.in, System.out);
	}

} public class Main {
	
	public void run(java.io.InputStream in, java.io.PrintStream out) {
		final java.util.Scanner sc = new java.util.Scanner(in);
		long[][] a;
		long[][] b;
		long[][] r;
		int n, m, l;

		n = sc.nextInt();
		m = sc.nextInt();
		l = sc.nextInt();
		a = new long[n][m];
		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();
		}
		
		r = new long[n][l];
		for (int i = 0; i < n; ++i)
		for (int j = 0; j < l; ++j) {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			}
		}
		
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < l; ++j) {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			}
		}
				
		sc.close();
	}

	public static void main(String[] args) {
		(new Main()).run(System.in, System.out);
	}

} Main public void run(java.io.InputStream in, java.io.PrintStream out) {
		final java.util.Scanner sc = new java.util.Scanner(in);
		long[][] a;
		long[][] b;
		long[][] r;
		int n, m, l;

		n = sc.nextInt();
		m = sc.nextInt();
		l = sc.nextInt();
		a = new long[n][m];
		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();
		}
		
		r = new long[n][l];
		for (int i = 0; i < n; ++i)
		for (int j = 0; j < l; ++j) {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			}
		}
		
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < l; ++j) {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			}
		}
				
		sc.close();
	} run {
		final java.util.Scanner sc = new java.util.Scanner(in);
		long[][] a;
		long[][] b;
		long[][] r;
		int n, m, l;

		n = sc.nextInt();
		m = sc.nextInt();
		l = sc.nextInt();
		a = new long[n][m];
		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();
		}
		
		r = new long[n][l];
		for (int i = 0; i < n; ++i)
		for (int j = 0; j < l; ++j) {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			}
		}
		
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < l; ++j) {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			}
		}
				
		sc.close();
	} final java.util.Scanner sc = new java.util.Scanner(in); sc new java.util.Scanner(in) long[][] a; a long[][] b; b long[][] r; r int n n m m l; l 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 a = new long[n][m] a new long[n][m] n m 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();
		} 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();
		} 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 r = new long[n][l] r new long[n][l] n l for (int i = 0; i < n; ++i)
		for (int j = 0; j < l; ++j) {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[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) {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			}
		} for (int j = 0; j < l; ++j) {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			}
		} int j = 0; int j = 0; j 0 j < l j l ++j ++j j {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			}
		} {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			}
		} r[i][j] = 0 r[i][j] r[i] r i j 0 for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			} int k = 0; int k = 0; k 0 k < m k m ++k ++k k {
				r[i][j] += a[i][k] * b[k][j];
			} {
				r[i][j] += a[i][k] * b[k][j];
			} r[i][j] += a[i][k] * b[k][j] r[i][j] r[i] r 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) {
			for (int j = 0; j < l; ++j) {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			}
		} int i = 0; int i = 0; i 0 i < n i n ++i ++i i {
			for (int j = 0; j < l; ++j) {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			}
		} {
			for (int j = 0; j < l; ++j) {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			}
		} for (int j = 0; j < l; ++j) {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			} int j = 0; int j = 0; j 0 j < l j l ++j ++j j {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			} {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			} out.print(r[i][j]) out.print out r[i][j] r[i] r i j if (j + 1 == l) out.println();
				else out.print(" "); j + 1 == l j + 1 j 1 l out.println() out.println out out.print(" ") out.print out " " sc.close() sc.close sc java.io.InputStream in in java.io.PrintStream out out public static void main(String[] args) {
		(new Main()).run(System.in, System.out);
	} main {
		(new Main()).run(System.in, System.out);
	} (new Main()).run(System.in, System.out) (new Main()).run (new Main()) System.in System System.in System.out System System.out String[] args args public class Main {
	
	public void run(java.io.InputStream in, java.io.PrintStream out) {
		final java.util.Scanner sc = new java.util.Scanner(in);
		long[][] a;
		long[][] b;
		long[][] r;
		int n, m, l;

		n = sc.nextInt();
		m = sc.nextInt();
		l = sc.nextInt();
		a = new long[n][m];
		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();
		}
		
		r = new long[n][l];
		for (int i = 0; i < n; ++i)
		for (int j = 0; j < l; ++j) {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			}
		}
		
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < l; ++j) {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			}
		}
				
		sc.close();
	}

	public static void main(String[] args) {
		(new Main()).run(System.in, System.out);
	}

} public class Main {
	
	public void run(java.io.InputStream in, java.io.PrintStream out) {
		final java.util.Scanner sc = new java.util.Scanner(in);
		long[][] a;
		long[][] b;
		long[][] r;
		int n, m, l;

		n = sc.nextInt();
		m = sc.nextInt();
		l = sc.nextInt();
		a = new long[n][m];
		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();
		}
		
		r = new long[n][l];
		for (int i = 0; i < n; ++i)
		for (int j = 0; j < l; ++j) {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			}
		}
		
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < l; ++j) {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			}
		}
				
		sc.close();
	}

	public static void main(String[] args) {
		(new Main()).run(System.in, System.out);
	}

} Main
public class Main {
	
	public void run(java.io.InputStream in, java.io.PrintStream out) {
		final java.util.Scanner sc = new java.util.Scanner(in);
		long[][] a;
		long[][] b;
		long[][] r;
		int n, m, l;

		n = sc.nextInt();
		m = sc.nextInt();
		l = sc.nextInt();
		a = new long[n][m];
		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();
		}
		
		r = new long[n][l];
		for (int i = 0; i < n; ++i)
		for (int j = 0; j < l; ++j) {
			r[i][j] = 0;
			for (int k = 0; k < m; ++k) {
				r[i][j] += a[i][k] * b[k][j];
			}
		}
		
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < l; ++j) {
				out.print(r[i][j]);
				if (j + 1 == l) out.println();
				else out.print(" ");
			}
		}
				
		sc.close();
	}

	public static void main(String[] args) {
		(new Main()).run(System.in, System.out);
	}

}