import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		//System.out.prlong("2x3行列と3x2行列の積を求めます\n");

		int n = sc.nextInt(); // 3
		int m = sc.nextInt(); // 2
		int l = sc.nextInt(); // 3

		long a[][]=new long[n][m];
		long b[][]=new long[m][l];
		long c[][]=new long[n][l];
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				long num=sc.nextInt();
				a[i][j]=num;
			}
		}
		for(int i=0;i<m;i++){
			for(int j=0;j<l;j++){
				long num=sc.nextInt();
				b[i][j]=num;

			}
		}

		sc.close();

		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++){
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			}

		}
		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++) {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			}
			System.out.println("");
		}
	}
} import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		//System.out.prlong("2x3行列と3x2行列の積を求めます\n");

		int n = sc.nextInt(); // 3
		int m = sc.nextInt(); // 2
		int l = sc.nextInt(); // 3

		long a[][]=new long[n][m];
		long b[][]=new long[m][l];
		long c[][]=new long[n][l];
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				long num=sc.nextInt();
				a[i][j]=num;
			}
		}
		for(int i=0;i<m;i++){
			for(int j=0;j<l;j++){
				long num=sc.nextInt();
				b[i][j]=num;

			}
		}

		sc.close();

		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++){
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			}

		}
		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++) {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			}
			System.out.println("");
		}
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		//System.out.prlong("2x3行列と3x2行列の積を求めます\n");

		int n = sc.nextInt(); // 3
		int m = sc.nextInt(); // 2
		int l = sc.nextInt(); // 3

		long a[][]=new long[n][m];
		long b[][]=new long[m][l];
		long c[][]=new long[n][l];
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				long num=sc.nextInt();
				a[i][j]=num;
			}
		}
		for(int i=0;i<m;i++){
			for(int j=0;j<l;j++){
				long num=sc.nextInt();
				b[i][j]=num;

			}
		}

		sc.close();

		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++){
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			}

		}
		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++) {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			}
			System.out.println("");
		}
	} main {
		Scanner sc = new Scanner(System.in);

		//System.out.prlong("2x3行列と3x2行列の積を求めます\n");

		int n = sc.nextInt(); // 3
		int m = sc.nextInt(); // 2
		int l = sc.nextInt(); // 3

		long a[][]=new long[n][m];
		long b[][]=new long[m][l];
		long c[][]=new long[n][l];
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				long num=sc.nextInt();
				a[i][j]=num;
			}
		}
		for(int i=0;i<m;i++){
			for(int j=0;j<l;j++){
				long num=sc.nextInt();
				b[i][j]=num;

			}
		}

		sc.close();

		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++){
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			}

		}
		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++) {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			}
			System.out.println("");
		}
	} 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 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<m;j++){
				long num=sc.nextInt();
				a[i][j]=num;
			}
		} int i=0; int i=0; i 0 i<n i n i++ i++ i {
			for(int j=0;j<m;j++){
				long num=sc.nextInt();
				a[i][j]=num;
			}
		} {
			for(int j=0;j<m;j++){
				long num=sc.nextInt();
				a[i][j]=num;
			}
		} for(int j=0;j<m;j++){
				long num=sc.nextInt();
				a[i][j]=num;
			} int j=0; int j=0; j 0 j<m j m j++ j++ j {
				long num=sc.nextInt();
				a[i][j]=num;
			} {
				long num=sc.nextInt();
				a[i][j]=num;
			} long num=sc.nextInt(); num sc.nextInt() sc.nextInt sc a[i][j]=num a[i][j] a[i] a i j num for(int i=0;i<m;i++){
			for(int j=0;j<l;j++){
				long num=sc.nextInt();
				b[i][j]=num;

			}
		} int i=0; int i=0; i 0 i<m i m i++ i++ i {
			for(int j=0;j<l;j++){
				long num=sc.nextInt();
				b[i][j]=num;

			}
		} {
			for(int j=0;j<l;j++){
				long num=sc.nextInt();
				b[i][j]=num;

			}
		} for(int j=0;j<l;j++){
				long num=sc.nextInt();
				b[i][j]=num;

			} int j=0; int j=0; j 0 j<l j l j++ j++ j {
				long num=sc.nextInt();
				b[i][j]=num;

			} {
				long num=sc.nextInt();
				b[i][j]=num;

			} long num=sc.nextInt(); num sc.nextInt() sc.nextInt sc b[i][j]=num b[i][j] b[i] b i j num sc.close() sc.close sc for(int i=0;i<n;i++){
			for(int j=0;j<l;j++){
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			}

		} int i=0; int i=0; i 0 i<n i n i++ i++ i {
			for(int j=0;j<l;j++){
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			}

		} {
			for(int j=0;j<l;j++){
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			}

		} for(int j=0;j<l;j++){
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			} int j=0; int j=0; j 0 j<l j l j++ j++ j {
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			} {
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			} long sum=0; sum 0 for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				} int k=0; int k=0; k 0 k<m k m k++ k++ k {
					sum+=a[i][k]*b[k][j];
				} {
					sum+=a[i][k]*b[k][j];
				} sum+=a[i][k]*b[k][j] sum a[i][k]*b[k][j] a[i][k] a[i] a i k b[k][j] b[k] b k j c[i][j]=sum c[i][j] c[i] c i j sum for(int i=0;i<n;i++){
			for(int j=0;j<l;j++) {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			}
			System.out.println("");
		} int i=0; int i=0; i 0 i<n i n i++ i++ i {
			for(int j=0;j<l;j++) {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			}
			System.out.println("");
		} {
			for(int j=0;j<l;j++) {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			}
			System.out.println("");
		} for(int j=0;j<l;j++) {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			} int j=0; int j=0; j 0 j<l j l j++ j++ j {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			} {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			} System.out.print(c[i][j]) System.out.print System.out System System.out c[i][j] c[i] c i j if(j != l-1) System.out.print(" "); j != l-1 j l-1 l 1 System.out.print(" ") System.out.print System.out System System.out " " System.out.println("") System.out.println System.out System System.out "" String[] args args public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		//System.out.prlong("2x3行列と3x2行列の積を求めます\n");

		int n = sc.nextInt(); // 3
		int m = sc.nextInt(); // 2
		int l = sc.nextInt(); // 3

		long a[][]=new long[n][m];
		long b[][]=new long[m][l];
		long c[][]=new long[n][l];
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				long num=sc.nextInt();
				a[i][j]=num;
			}
		}
		for(int i=0;i<m;i++){
			for(int j=0;j<l;j++){
				long num=sc.nextInt();
				b[i][j]=num;

			}
		}

		sc.close();

		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++){
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			}

		}
		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++) {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			}
			System.out.println("");
		}
	}
} public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		//System.out.prlong("2x3行列と3x2行列の積を求めます\n");

		int n = sc.nextInt(); // 3
		int m = sc.nextInt(); // 2
		int l = sc.nextInt(); // 3

		long a[][]=new long[n][m];
		long b[][]=new long[m][l];
		long c[][]=new long[n][l];
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				long num=sc.nextInt();
				a[i][j]=num;
			}
		}
		for(int i=0;i<m;i++){
			for(int j=0;j<l;j++){
				long num=sc.nextInt();
				b[i][j]=num;

			}
		}

		sc.close();

		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++){
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			}

		}
		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++) {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			}
			System.out.println("");
		}
	}
} Main
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		//System.out.prlong("2x3行列と3x2行列の積を求めます\n");

		int n = sc.nextInt(); // 3
		int m = sc.nextInt(); // 2
		int l = sc.nextInt(); // 3

		long a[][]=new long[n][m];
		long b[][]=new long[m][l];
		long c[][]=new long[n][l];
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				long num=sc.nextInt();
				a[i][j]=num;
			}
		}
		for(int i=0;i<m;i++){
			for(int j=0;j<l;j++){
				long num=sc.nextInt();
				b[i][j]=num;

			}
		}

		sc.close();

		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++){
				long sum=0;
				for(int k=0;k<m;k++){
					sum+=a[i][k]*b[k][j];
				}
				c[i][j]=sum;

			}

		}
		for(int i=0;i<n;i++){
			for(int j=0;j<l;j++) {
				System.out.print(c[i][j]);
				if(j != l-1) System.out.print(" ");
			}
			System.out.println("");
		}
	}
}
