import java.util.Scanner;

public class Main {

    /*
     * 行列の積
     * 
     * n×m の行列 A と m×l の行列 B を入力し、それらの積である n×l の行列 C を出力するプログラムを作成してください。行列 C
     * の各要素 cij は次の式で得られます：
     * 
     * cij=?k=1maikbkj ここで、A、B、C の各要素をそれぞれ aij、bij、cij とします。
     * 
     * Input １行目に n、m、l が空白区切りで与えられます。
     * 
     * 続く行に n×m の行列 A と m×l の行列 B が与えられます。
     * 
     * Output n×l の行列 C の要素 cij を出力してください。各行の隣り合う要素を１つの空白で区切ってください。
     * 
     * Constraints 1?n,m,l?100 0?aij,bij?10000
     */
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();

        int[][] array1 = new int[n][m];
        int[][] array2 = new int[m][l];

        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                array1[i][j] = sc.nextInt();
            }
        }

        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2[i].length; j++) {
                array2[i][j] = sc.nextInt();
            }
        }
        
        sc.close();
        long[][] array3 = new long[n][l];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            }
        }
        
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

} import java.util.Scanner; Scanner java.util public class Main {

    /*
     * 行列の積
     * 
     * n×m の行列 A と m×l の行列 B を入力し、それらの積である n×l の行列 C を出力するプログラムを作成してください。行列 C
     * の各要素 cij は次の式で得られます：
     * 
     * cij=?k=1maikbkj ここで、A、B、C の各要素をそれぞれ aij、bij、cij とします。
     * 
     * Input １行目に n、m、l が空白区切りで与えられます。
     * 
     * 続く行に n×m の行列 A と m×l の行列 B が与えられます。
     * 
     * Output n×l の行列 C の要素 cij を出力してください。各行の隣り合う要素を１つの空白で区切ってください。
     * 
     * Constraints 1?n,m,l?100 0?aij,bij?10000
     */
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();

        int[][] array1 = new int[n][m];
        int[][] array2 = new int[m][l];

        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                array1[i][j] = sc.nextInt();
            }
        }

        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2[i].length; j++) {
                array2[i][j] = sc.nextInt();
            }
        }
        
        sc.close();
        long[][] array3 = new long[n][l];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            }
        }
        
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

} Main /*
     * 行列の積
     * 
     * n×m の行列 A と m×l の行列 B を入力し、それらの積である n×l の行列 C を出力するプログラムを作成してください。行列 C
     * の各要素 cij は次の式で得られます：
     * 
     * cij=?k=1maikbkj ここで、A、B、C の各要素をそれぞれ aij、bij、cij とします。
     * 
     * Input １行目に n、m、l が空白区切りで与えられます。
     * 
     * 続く行に n×m の行列 A と m×l の行列 B が与えられます。
     * 
     * Output n×l の行列 C の要素 cij を出力してください。各行の隣り合う要素を１つの空白で区切ってください。
     * 
     * Constraints 1?n,m,l?100 0?aij,bij?10000
     */
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();

        int[][] array1 = new int[n][m];
        int[][] array2 = new int[m][l];

        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                array1[i][j] = sc.nextInt();
            }
        }

        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2[i].length; j++) {
                array2[i][j] = sc.nextInt();
            }
        }
        
        sc.close();
        long[][] array3 = new long[n][l];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            }
        }
        
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    } main {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();

        int[][] array1 = new int[n][m];
        int[][] array2 = new int[m][l];

        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                array1[i][j] = sc.nextInt();
            }
        }

        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2[i].length; j++) {
                array2[i][j] = sc.nextInt();
            }
        }
        
        sc.close();
        long[][] array3 = new long[n][l];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            }
        }
        
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[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 int[][] array1 = new int[n][m]; array1 new int[n][m] n m int[][] array2 = new int[m][l]; array2 new int[m][l] m l for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                array1[i][j] = sc.nextInt();
            }
        } int i = 0; int i = 0; i 0 i < array1.length i array1.length array1 array1.length i++ i++ i {
            for (int j = 0; j < array1[i].length; j++) {
                array1[i][j] = sc.nextInt();
            }
        } {
            for (int j = 0; j < array1[i].length; j++) {
                array1[i][j] = sc.nextInt();
            }
        } for (int j = 0; j < array1[i].length; j++) {
                array1[i][j] = sc.nextInt();
            } int j = 0; int j = 0; j 0 j < array1[i].length j array1[i].length array1[i] array1 i array1[i].length j++ j++ j {
                array1[i][j] = sc.nextInt();
            } {
                array1[i][j] = sc.nextInt();
            } array1[i][j] = sc.nextInt() array1[i][j] array1[i] array1 i j sc.nextInt() sc.nextInt sc for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2[i].length; j++) {
                array2[i][j] = sc.nextInt();
            }
        } int i = 0; int i = 0; i 0 i < array2.length i array2.length array2 array2.length i++ i++ i {
            for (int j = 0; j < array2[i].length; j++) {
                array2[i][j] = sc.nextInt();
            }
        } {
            for (int j = 0; j < array2[i].length; j++) {
                array2[i][j] = sc.nextInt();
            }
        } for (int j = 0; j < array2[i].length; j++) {
                array2[i][j] = sc.nextInt();
            } int j = 0; int j = 0; j 0 j < array2[i].length j array2[i].length array2[i] array2 i array2[i].length j++ j++ j {
                array2[i][j] = sc.nextInt();
            } {
                array2[i][j] = sc.nextInt();
            } array2[i][j] = sc.nextInt() array2[i][j] array2[i] array2 i j sc.nextInt() sc.nextInt sc sc.close() sc.close sc long[][] array3 = new long[n][l]; array3 new long[n][l] n l for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            }
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            for (int j = 0; j < l; j++) {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            }
        } {
            for (int j = 0; j < l; j++) {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            }
        } for (int j = 0; j < l; j++) {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            } int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            } {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            } for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                } int j2 = 0; int j2 = 0; j2 0 j2 < m j2 m j2++ j2++ j2 {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                } {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                } array3[i][j] += array1[i][j2]*array2[j2][j] array3[i][j] array3[i] array3 i j array1[i][j2]*array2[j2][j] array1[i][j2] array1[i] array1 i j2 array2[j2][j] array2[j2] array2 j2 j for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            }
            System.out.println();
        } int i = 0; int i = 0; i 0 i < array3.length i array3.length array3 array3.length i++ i++ i {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            }
            System.out.println();
        } {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            }
            System.out.println();
        } for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            } int j = 0; int j = 0; j 0 j < array3[i].length j array3[i].length array3[i] array3 i array3[i].length j++ j++ j {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            } {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            } System.out.print(array3[i][j]) System.out.print System.out System System.out array3[i][j] array3[i] array3 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.print System.out System System.out " " System.out.println() System.out.println System.out System System.out String[] args args public class Main {

    /*
     * 行列の積
     * 
     * n×m の行列 A と m×l の行列 B を入力し、それらの積である n×l の行列 C を出力するプログラムを作成してください。行列 C
     * の各要素 cij は次の式で得られます：
     * 
     * cij=?k=1maikbkj ここで、A、B、C の各要素をそれぞれ aij、bij、cij とします。
     * 
     * Input １行目に n、m、l が空白区切りで与えられます。
     * 
     * 続く行に n×m の行列 A と m×l の行列 B が与えられます。
     * 
     * Output n×l の行列 C の要素 cij を出力してください。各行の隣り合う要素を１つの空白で区切ってください。
     * 
     * Constraints 1?n,m,l?100 0?aij,bij?10000
     */
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();

        int[][] array1 = new int[n][m];
        int[][] array2 = new int[m][l];

        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                array1[i][j] = sc.nextInt();
            }
        }

        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2[i].length; j++) {
                array2[i][j] = sc.nextInt();
            }
        }
        
        sc.close();
        long[][] array3 = new long[n][l];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            }
        }
        
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

} public class Main {

    /*
     * 行列の積
     * 
     * n×m の行列 A と m×l の行列 B を入力し、それらの積である n×l の行列 C を出力するプログラムを作成してください。行列 C
     * の各要素 cij は次の式で得られます：
     * 
     * cij=?k=1maikbkj ここで、A、B、C の各要素をそれぞれ aij、bij、cij とします。
     * 
     * Input １行目に n、m、l が空白区切りで与えられます。
     * 
     * 続く行に n×m の行列 A と m×l の行列 B が与えられます。
     * 
     * Output n×l の行列 C の要素 cij を出力してください。各行の隣り合う要素を１つの空白で区切ってください。
     * 
     * Constraints 1?n,m,l?100 0?aij,bij?10000
     */
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();

        int[][] array1 = new int[n][m];
        int[][] array2 = new int[m][l];

        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                array1[i][j] = sc.nextInt();
            }
        }

        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2[i].length; j++) {
                array2[i][j] = sc.nextInt();
            }
        }
        
        sc.close();
        long[][] array3 = new long[n][l];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            }
        }
        
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

} Main
import java.util.Scanner;

public class Main {

    /*
     * 行列の積
     * 
     * n×m の行列 A と m×l の行列 B を入力し、それらの積である n×l の行列 C を出力するプログラムを作成してください。行列 C
     * の各要素 cij は次の式で得られます：
     * 
     * cij=?k=1maikbkj ここで、A、B、C の各要素をそれぞれ aij、bij、cij とします。
     * 
     * Input １行目に n、m、l が空白区切りで与えられます。
     * 
     * 続く行に n×m の行列 A と m×l の行列 B が与えられます。
     * 
     * Output n×l の行列 C の要素 cij を出力してください。各行の隣り合う要素を１つの空白で区切ってください。
     * 
     * Constraints 1?n,m,l?100 0?aij,bij?10000
     */
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();

        int[][] array1 = new int[n][m];
        int[][] array2 = new int[m][l];

        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                array1[i][j] = sc.nextInt();
            }
        }

        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2[i].length; j++) {
                array2[i][j] = sc.nextInt();
            }
        }
        
        sc.close();
        long[][] array3 = new long[n][l];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                for (int j2 = 0; j2 < m; j2++) {
                    array3[i][j] += array1[i][j2]*array2[j2][j];
                }
            }
        }
        
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]);
                if(j != l -1){
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

}