import java.util.*;
/*行列の積
１行目に ｎｍｌ が空白区切りで与えられます。続く行にｎｘｍの行列Aと
ｍｘｌの行列Bが与えられます。ｎｘｌの行列Cの要素を出力する。
*/
public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
       Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();
        
        int [][] a = new int[n][m];//ｎｘｍを入れる箱
        int [][] b = new int[m][l];//ｍｘｌを入れる箱
        long [][] c = new long[n][l];//answerのｎｘｌを入れる箱

        int i;//n
        int j;//m
        int k;//l
        
        
//      System.out.println(n+" "+m+" "+l);
//ｎｘｍとｍｘｌの読込
        for( i = 0; i < n; i++){
          for( j = 0; j < m; j++){
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          }
//          System.out.println();
        }
        
        for(i = 0;i<m;i++){
            for(j = 0;j<l;j++){
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            }
//            System.out.println();
        }
        
        //ここから
        for ( i = 0; i < n; i++){
            for ( j = 0; j < l; j++){
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            }
        }
        
        for( i = 0; i < n; i++){
            for( j = 0; j < l; j++){
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            }
        }
    }
}
 import java.util.*; util.* java public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
       Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();
        
        int [][] a = new int[n][m];//ｎｘｍを入れる箱
        int [][] b = new int[m][l];//ｍｘｌを入れる箱
        long [][] c = new long[n][l];//answerのｎｘｌを入れる箱

        int i;//n
        int j;//m
        int k;//l
        
        
//      System.out.println(n+" "+m+" "+l);
//ｎｘｍとｍｘｌの読込
        for( i = 0; i < n; i++){
          for( j = 0; j < m; j++){
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          }
//          System.out.println();
        }
        
        for(i = 0;i<m;i++){
            for(j = 0;j<l;j++){
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            }
//            System.out.println();
        }
        
        //ここから
        for ( i = 0; i < n; i++){
            for ( j = 0; j < l; j++){
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            }
        }
        
        for( i = 0; i < n; i++){
            for( j = 0; j < l; j++){
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            }
        }
    }
} Main public static void main(String[] args) throws Exception {
        // Your code here!
       Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();
        
        int [][] a = new int[n][m];//ｎｘｍを入れる箱
        int [][] b = new int[m][l];//ｍｘｌを入れる箱
        long [][] c = new long[n][l];//answerのｎｘｌを入れる箱

        int i;//n
        int j;//m
        int k;//l
        
        
//      System.out.println(n+" "+m+" "+l);
//ｎｘｍとｍｘｌの読込
        for( i = 0; i < n; i++){
          for( j = 0; j < m; j++){
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          }
//          System.out.println();
        }
        
        for(i = 0;i<m;i++){
            for(j = 0;j<l;j++){
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            }
//            System.out.println();
        }
        
        //ここから
        for ( i = 0; i < n; i++){
            for ( j = 0; j < l; j++){
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            }
        }
        
        for( i = 0; i < n; i++){
            for( j = 0; j < l; j++){
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            }
        }
    } main {
        // Your code here!
       Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();
        
        int [][] a = new int[n][m];//ｎｘｍを入れる箱
        int [][] b = new int[m][l];//ｍｘｌを入れる箱
        long [][] c = new long[n][l];//answerのｎｘｌを入れる箱

        int i;//n
        int j;//m
        int k;//l
        
        
//      System.out.println(n+" "+m+" "+l);
//ｎｘｍとｍｘｌの読込
        for( i = 0; i < n; i++){
          for( j = 0; j < m; j++){
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          }
//          System.out.println();
        }
        
        for(i = 0;i<m;i++){
            for(j = 0;j<l;j++){
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            }
//            System.out.println();
        }
        
        //ここから
        for ( i = 0; i < n; i++){
            for ( j = 0; j < l; j++){
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            }
        }
        
        for( i = 0; i < n; i++){
            for( j = 0; j < l; j++){
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            }
        }
    } 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 [][] a = new int[n][m]; a new int[n][m] n m int [][] b = new int[m][l]; b new int[m][l] m l long [][] c = new long[n][l]; c new long[n][l] n l int i; i int j; j int k; k for( i = 0; i < n; i++){
          for( j = 0; j < m; j++){
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          }
//          System.out.println();
        } i = 0; i = 0 i 0 i < n i n i++ i++ i {
          for( j = 0; j < m; j++){
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          }
//          System.out.println();
        } {
          for( j = 0; j < m; j++){
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          }
//          System.out.println();
        } for( j = 0; j < m; j++){
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          } j = 0; j = 0 j 0 j < m j m j++ j++ j {
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          } {
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          } a[i][j] = sc.nextInt() a[i][j] a[i] a i j sc.nextInt() sc.nextInt sc for(i = 0;i<m;i++){
            for(j = 0;j<l;j++){
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            }
//            System.out.println();
        } i = 0; i = 0 i 0 i<m i m i++ i++ i {
            for(j = 0;j<l;j++){
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            }
//            System.out.println();
        } {
            for(j = 0;j<l;j++){
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            }
//            System.out.println();
        } for(j = 0;j<l;j++){
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            } j = 0; j = 0 j 0 j<l j l j++ j++ j {
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            } {
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            } b[i][j] = sc.nextInt() b[i][j] b[i] b i j sc.nextInt() sc.nextInt sc for ( i = 0; i < n; i++){
            for ( j = 0; j < l; j++){
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            }
        } i = 0; i = 0 i 0 i < n i n i++ i++ i {
            for ( j = 0; j < l; j++){
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            }
        } {
            for ( j = 0; j < l; j++){
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            }
        } for ( j = 0; j < l; j++){
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            } j = 0; j = 0 j 0 j < l j l j++ j++ j {
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            } {
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            } for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                } k = 0; k = 0 k 0 k < m k m k++ k++ k {
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                } {
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                } c[i][j] += ( a[i][k]*b[k][j]) c[i][j] c[i] c 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( i = 0; i < n; i++){
            for( j = 0; j < l; j++){
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            }
        } i = 0; i = 0 i 0 i < n i n i++ i++ i {
            for( j = 0; j < l; j++){
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            }
        } {
            for( j = 0; j < l; j++){
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            }
        } for( j = 0; j < l; j++){
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            } j = 0; j = 0 j 0 j < l j l j++ j++ j {
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            } {
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            } if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                } !(j==l-1) (j==l-1) j l-1 l 1 {
                System.out.print(c[i][j] +" ");
                } System.out.print(c[i][j] +" ") System.out.print System.out System System.out c[i][j] +" " c[i][j] c[i] c i j " " if(j == l-1){
                    System.out.println(c[i][j]);
                } j == l-1 j l-1 l 1 {
                    System.out.println(c[i][j]);
                } System.out.println(c[i][j]) System.out.println System.out System System.out c[i][j] c[i] c i j String[] args args public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
       Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();
        
        int [][] a = new int[n][m];//ｎｘｍを入れる箱
        int [][] b = new int[m][l];//ｍｘｌを入れる箱
        long [][] c = new long[n][l];//answerのｎｘｌを入れる箱

        int i;//n
        int j;//m
        int k;//l
        
        
//      System.out.println(n+" "+m+" "+l);
//ｎｘｍとｍｘｌの読込
        for( i = 0; i < n; i++){
          for( j = 0; j < m; j++){
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          }
//          System.out.println();
        }
        
        for(i = 0;i<m;i++){
            for(j = 0;j<l;j++){
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            }
//            System.out.println();
        }
        
        //ここから
        for ( i = 0; i < n; i++){
            for ( j = 0; j < l; j++){
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            }
        }
        
        for( i = 0; i < n; i++){
            for( j = 0; j < l; j++){
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            }
        }
    }
} public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
       Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();
        
        int [][] a = new int[n][m];//ｎｘｍを入れる箱
        int [][] b = new int[m][l];//ｍｘｌを入れる箱
        long [][] c = new long[n][l];//answerのｎｘｌを入れる箱

        int i;//n
        int j;//m
        int k;//l
        
        
//      System.out.println(n+" "+m+" "+l);
//ｎｘｍとｍｘｌの読込
        for( i = 0; i < n; i++){
          for( j = 0; j < m; j++){
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          }
//          System.out.println();
        }
        
        for(i = 0;i<m;i++){
            for(j = 0;j<l;j++){
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            }
//            System.out.println();
        }
        
        //ここから
        for ( i = 0; i < n; i++){
            for ( j = 0; j < l; j++){
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            }
        }
        
        for( i = 0; i < n; i++){
            for( j = 0; j < l; j++){
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            }
        }
    }
} Main
import java.util.*;
/*行列の積
１行目に ｎｍｌ が空白区切りで与えられます。続く行にｎｘｍの行列Aと
ｍｘｌの行列Bが与えられます。ｎｘｌの行列Cの要素を出力する。
*/
public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
       Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int l = sc.nextInt();
        
        int [][] a = new int[n][m];//ｎｘｍを入れる箱
        int [][] b = new int[m][l];//ｍｘｌを入れる箱
        long [][] c = new long[n][l];//answerのｎｘｌを入れる箱

        int i;//n
        int j;//m
        int k;//l
        
        
//      System.out.println(n+" "+m+" "+l);
//ｎｘｍとｍｘｌの読込
        for( i = 0; i < n; i++){
          for( j = 0; j < m; j++){
              a[i][j] = sc.nextInt();
//              System.out.print(a[i][j]);
          }
//          System.out.println();
        }
        
        for(i = 0;i<m;i++){
            for(j = 0;j<l;j++){
                b[i][j] = sc.nextInt();
//              System.out.print(b[i][j]);
                
            }
//            System.out.println();
        }
        
        //ここから
        for ( i = 0; i < n; i++){
            for ( j = 0; j < l; j++){
                for ( k = 0; k < m; k++){
                      
             //      c[i][j] = a[i][k] * b[k][j];
                   c[i][j] += ( a[i][k]*b[k][j]);
                }
            }
        }
        
        for( i = 0; i < n; i++){
            for( j = 0; j < l; j++){
                if(!(j==l-1)){
                System.out.print(c[i][j] +" ");
                }else if(j == l-1){
                    System.out.println(c[i][j]);
                }
            }
        }
    }
}

