import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		//入力
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int n=Integer.parseInt(st.nextToken());
        int m=Integer.parseInt(st.nextToken());
        int l=Integer.parseInt(st.nextToken());
        long[][] Aary=new long[n][m];
        long[][] Bary=new long[m][l];
        for(int j=0;j<n;j++){
            StringTokenizer sa=new StringTokenizer(br.readLine());
            for(int i=0;i<m;i++){
                Aary[j][i]=Long.parseLong(sa.nextToken());
            }
        }
        for(int j=0;j<m;j++){
            StringTokenizer sb=new StringTokenizer(br.readLine());
            for(int i=0;i<l;i++){
                Bary[j][i]=Long.parseLong(sb.nextToken());
            }
        }

        //配列の作成と加工
        long[][] Cary = new long[n][l];
        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 += Aary[i][k] * Bary[k][j];
                }
                Cary[i][j] = sum;
            }
        }

        //出力
        for(int j=0;j<n;j++){
            for(int i=0;i<l;i++){
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            }
            System.out.println();
        }
	}

}
 import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.StringTokenizer; StringTokenizer java.util public class Main {

	public static void main(String[] args) throws IOException {
		//入力
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int n=Integer.parseInt(st.nextToken());
        int m=Integer.parseInt(st.nextToken());
        int l=Integer.parseInt(st.nextToken());
        long[][] Aary=new long[n][m];
        long[][] Bary=new long[m][l];
        for(int j=0;j<n;j++){
            StringTokenizer sa=new StringTokenizer(br.readLine());
            for(int i=0;i<m;i++){
                Aary[j][i]=Long.parseLong(sa.nextToken());
            }
        }
        for(int j=0;j<m;j++){
            StringTokenizer sb=new StringTokenizer(br.readLine());
            for(int i=0;i<l;i++){
                Bary[j][i]=Long.parseLong(sb.nextToken());
            }
        }

        //配列の作成と加工
        long[][] Cary = new long[n][l];
        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 += Aary[i][k] * Bary[k][j];
                }
                Cary[i][j] = sum;
            }
        }

        //出力
        for(int j=0;j<n;j++){
            for(int i=0;i<l;i++){
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            }
            System.out.println();
        }
	}

} Main public static void main(String[] args) throws IOException {
		//入力
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int n=Integer.parseInt(st.nextToken());
        int m=Integer.parseInt(st.nextToken());
        int l=Integer.parseInt(st.nextToken());
        long[][] Aary=new long[n][m];
        long[][] Bary=new long[m][l];
        for(int j=0;j<n;j++){
            StringTokenizer sa=new StringTokenizer(br.readLine());
            for(int i=0;i<m;i++){
                Aary[j][i]=Long.parseLong(sa.nextToken());
            }
        }
        for(int j=0;j<m;j++){
            StringTokenizer sb=new StringTokenizer(br.readLine());
            for(int i=0;i<l;i++){
                Bary[j][i]=Long.parseLong(sb.nextToken());
            }
        }

        //配列の作成と加工
        long[][] Cary = new long[n][l];
        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 += Aary[i][k] * Bary[k][j];
                }
                Cary[i][j] = sum;
            }
        }

        //出力
        for(int j=0;j<n;j++){
            for(int i=0;i<l;i++){
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            }
            System.out.println();
        }
	} main {
		//入力
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int n=Integer.parseInt(st.nextToken());
        int m=Integer.parseInt(st.nextToken());
        int l=Integer.parseInt(st.nextToken());
        long[][] Aary=new long[n][m];
        long[][] Bary=new long[m][l];
        for(int j=0;j<n;j++){
            StringTokenizer sa=new StringTokenizer(br.readLine());
            for(int i=0;i<m;i++){
                Aary[j][i]=Long.parseLong(sa.nextToken());
            }
        }
        for(int j=0;j<m;j++){
            StringTokenizer sb=new StringTokenizer(br.readLine());
            for(int i=0;i<l;i++){
                Bary[j][i]=Long.parseLong(sb.nextToken());
            }
        }

        //配列の作成と加工
        long[][] Cary = new long[n][l];
        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 += Aary[i][k] * Bary[k][j];
                }
                Cary[i][j] = sum;
            }
        }

        //出力
        for(int j=0;j<n;j++){
            for(int i=0;i<l;i++){
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            }
            System.out.println();
        }
	} BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) StringTokenizer st=new StringTokenizer(br.readLine()); st new StringTokenizer(br.readLine()) int n=Integer.parseInt(st.nextToken()); n Integer.parseInt(st.nextToken()) Integer.parseInt Integer st.nextToken() st.nextToken st int m=Integer.parseInt(st.nextToken()); m Integer.parseInt(st.nextToken()) Integer.parseInt Integer st.nextToken() st.nextToken st int l=Integer.parseInt(st.nextToken()); l Integer.parseInt(st.nextToken()) Integer.parseInt Integer st.nextToken() st.nextToken st long[][] Aary=new long[n][m]; Aary new long[n][m] n m long[][] Bary=new long[m][l]; Bary new long[m][l] m l for(int j=0;j<n;j++){
            StringTokenizer sa=new StringTokenizer(br.readLine());
            for(int i=0;i<m;i++){
                Aary[j][i]=Long.parseLong(sa.nextToken());
            }
        } int j=0; int j=0; j 0 j<n j n j++ j++ j {
            StringTokenizer sa=new StringTokenizer(br.readLine());
            for(int i=0;i<m;i++){
                Aary[j][i]=Long.parseLong(sa.nextToken());
            }
        } {
            StringTokenizer sa=new StringTokenizer(br.readLine());
            for(int i=0;i<m;i++){
                Aary[j][i]=Long.parseLong(sa.nextToken());
            }
        } StringTokenizer sa=new StringTokenizer(br.readLine()); sa new StringTokenizer(br.readLine()) for(int i=0;i<m;i++){
                Aary[j][i]=Long.parseLong(sa.nextToken());
            } int i=0; int i=0; i 0 i<m i m i++ i++ i {
                Aary[j][i]=Long.parseLong(sa.nextToken());
            } {
                Aary[j][i]=Long.parseLong(sa.nextToken());
            } Aary[j][i]=Long.parseLong(sa.nextToken()) Aary[j][i] Aary[j] Aary j i Long.parseLong(sa.nextToken()) Long.parseLong Long sa.nextToken() sa.nextToken sa for(int j=0;j<m;j++){
            StringTokenizer sb=new StringTokenizer(br.readLine());
            for(int i=0;i<l;i++){
                Bary[j][i]=Long.parseLong(sb.nextToken());
            }
        } int j=0; int j=0; j 0 j<m j m j++ j++ j {
            StringTokenizer sb=new StringTokenizer(br.readLine());
            for(int i=0;i<l;i++){
                Bary[j][i]=Long.parseLong(sb.nextToken());
            }
        } {
            StringTokenizer sb=new StringTokenizer(br.readLine());
            for(int i=0;i<l;i++){
                Bary[j][i]=Long.parseLong(sb.nextToken());
            }
        } StringTokenizer sb=new StringTokenizer(br.readLine()); sb new StringTokenizer(br.readLine()) for(int i=0;i<l;i++){
                Bary[j][i]=Long.parseLong(sb.nextToken());
            } int i=0; int i=0; i 0 i<l i l i++ i++ i {
                Bary[j][i]=Long.parseLong(sb.nextToken());
            } {
                Bary[j][i]=Long.parseLong(sb.nextToken());
            } Bary[j][i]=Long.parseLong(sb.nextToken()) Bary[j][i] Bary[j] Bary j i Long.parseLong(sb.nextToken()) Long.parseLong Long sb.nextToken() sb.nextToken sb long[][] Cary = new long[n][l]; Cary new long[n][l] n l 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 += Aary[i][k] * Bary[k][j];
                }
                Cary[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 += Aary[i][k] * Bary[k][j];
                }
                Cary[i][j] = sum;
            }
        } {
            for (int j = 0; j < l; j++) {
                long sum = 0;
                for (int k = 0; k < m; k++) {
                    sum += Aary[i][k] * Bary[k][j];
                }
                Cary[i][j] = sum;
            }
        } for (int j = 0; j < l; j++) {
                long sum = 0;
                for (int k = 0; k < m; k++) {
                    sum += Aary[i][k] * Bary[k][j];
                }
                Cary[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 += Aary[i][k] * Bary[k][j];
                }
                Cary[i][j] = sum;
            } {
                long sum = 0;
                for (int k = 0; k < m; k++) {
                    sum += Aary[i][k] * Bary[k][j];
                }
                Cary[i][j] = sum;
            } long sum = 0; sum 0 for (int k = 0; k < m; k++) {
                    sum += Aary[i][k] * Bary[k][j];
                } int k = 0; int k = 0; k 0 k < m k m k++ k++ k {
                    sum += Aary[i][k] * Bary[k][j];
                } {
                    sum += Aary[i][k] * Bary[k][j];
                } sum += Aary[i][k] * Bary[k][j] sum Aary[i][k] * Bary[k][j] Aary[i][k] Aary[i] Aary i k Bary[k][j] Bary[k] Bary k j Cary[i][j] = sum Cary[i][j] Cary[i] Cary i j sum for(int j=0;j<n;j++){
            for(int i=0;i<l;i++){
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            }
            System.out.println();
        } int j=0; int j=0; j 0 j<n j n j++ j++ j {
            for(int i=0;i<l;i++){
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            }
            System.out.println();
        } {
            for(int i=0;i<l;i++){
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            }
            System.out.println();
        } for(int i=0;i<l;i++){
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            } int i=0; int i=0; i 0 i<l i l i++ i++ i {
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            } {
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            } System.out.print(Cary[j][i]) System.out.print System.out System System.out Cary[j][i] Cary[j] Cary j i if(i==l-1) {
                	continue;
                } i==l-1 i l-1 l 1 {
                	continue;
                } continue; 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) throws IOException {
		//入力
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int n=Integer.parseInt(st.nextToken());
        int m=Integer.parseInt(st.nextToken());
        int l=Integer.parseInt(st.nextToken());
        long[][] Aary=new long[n][m];
        long[][] Bary=new long[m][l];
        for(int j=0;j<n;j++){
            StringTokenizer sa=new StringTokenizer(br.readLine());
            for(int i=0;i<m;i++){
                Aary[j][i]=Long.parseLong(sa.nextToken());
            }
        }
        for(int j=0;j<m;j++){
            StringTokenizer sb=new StringTokenizer(br.readLine());
            for(int i=0;i<l;i++){
                Bary[j][i]=Long.parseLong(sb.nextToken());
            }
        }

        //配列の作成と加工
        long[][] Cary = new long[n][l];
        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 += Aary[i][k] * Bary[k][j];
                }
                Cary[i][j] = sum;
            }
        }

        //出力
        for(int j=0;j<n;j++){
            for(int i=0;i<l;i++){
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            }
            System.out.println();
        }
	}

} public class Main {

	public static void main(String[] args) throws IOException {
		//入力
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int n=Integer.parseInt(st.nextToken());
        int m=Integer.parseInt(st.nextToken());
        int l=Integer.parseInt(st.nextToken());
        long[][] Aary=new long[n][m];
        long[][] Bary=new long[m][l];
        for(int j=0;j<n;j++){
            StringTokenizer sa=new StringTokenizer(br.readLine());
            for(int i=0;i<m;i++){
                Aary[j][i]=Long.parseLong(sa.nextToken());
            }
        }
        for(int j=0;j<m;j++){
            StringTokenizer sb=new StringTokenizer(br.readLine());
            for(int i=0;i<l;i++){
                Bary[j][i]=Long.parseLong(sb.nextToken());
            }
        }

        //配列の作成と加工
        long[][] Cary = new long[n][l];
        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 += Aary[i][k] * Bary[k][j];
                }
                Cary[i][j] = sum;
            }
        }

        //出力
        for(int j=0;j<n;j++){
            for(int i=0;i<l;i++){
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            }
            System.out.println();
        }
	}

} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		//入力
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int n=Integer.parseInt(st.nextToken());
        int m=Integer.parseInt(st.nextToken());
        int l=Integer.parseInt(st.nextToken());
        long[][] Aary=new long[n][m];
        long[][] Bary=new long[m][l];
        for(int j=0;j<n;j++){
            StringTokenizer sa=new StringTokenizer(br.readLine());
            for(int i=0;i<m;i++){
                Aary[j][i]=Long.parseLong(sa.nextToken());
            }
        }
        for(int j=0;j<m;j++){
            StringTokenizer sb=new StringTokenizer(br.readLine());
            for(int i=0;i<l;i++){
                Bary[j][i]=Long.parseLong(sb.nextToken());
            }
        }

        //配列の作成と加工
        long[][] Cary = new long[n][l];
        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 += Aary[i][k] * Bary[k][j];
                }
                Cary[i][j] = sum;
            }
        }

        //出力
        for(int j=0;j<n;j++){
            for(int i=0;i<l;i++){
                System.out.print(Cary[j][i]);
                if(i==l-1) {
                	continue;
                }
                System.out.print(" ");
            }
            System.out.println();
        }
	}

}

