import java.util.*;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String[] data = sc.nextLine().split(" ");
        int n = Integer.parseInt(data[0]);
        int m = Integer.parseInt(data[1]);
        int l = Integer.parseInt(data[2]);

        int[][] listA = new int[n][m];
        int[][] listB = new int[l][m];
        for(int i = 0; i < n; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < m;j++){
                listA[i][j]=Integer.parseInt(strTmp[j]);
            }
        }
        
        for(int i = 0; i < m; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < l;j++){
                listB[j][i]=Integer.parseInt(strTmp[j]);
            }
        }
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < n; i++){
            for(int j = 0; j < l;j++){
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            }
            sb.append("\n");
        }       
        System.out.print(sb);
    }
} import java.util.*; util.* java public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String[] data = sc.nextLine().split(" ");
        int n = Integer.parseInt(data[0]);
        int m = Integer.parseInt(data[1]);
        int l = Integer.parseInt(data[2]);

        int[][] listA = new int[n][m];
        int[][] listB = new int[l][m];
        for(int i = 0; i < n; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < m;j++){
                listA[i][j]=Integer.parseInt(strTmp[j]);
            }
        }
        
        for(int i = 0; i < m; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < l;j++){
                listB[j][i]=Integer.parseInt(strTmp[j]);
            }
        }
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < n; i++){
            for(int j = 0; j < l;j++){
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            }
            sb.append("\n");
        }       
        System.out.print(sb);
    }
} Main public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String[] data = sc.nextLine().split(" ");
        int n = Integer.parseInt(data[0]);
        int m = Integer.parseInt(data[1]);
        int l = Integer.parseInt(data[2]);

        int[][] listA = new int[n][m];
        int[][] listB = new int[l][m];
        for(int i = 0; i < n; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < m;j++){
                listA[i][j]=Integer.parseInt(strTmp[j]);
            }
        }
        
        for(int i = 0; i < m; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < l;j++){
                listB[j][i]=Integer.parseInt(strTmp[j]);
            }
        }
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < n; i++){
            for(int j = 0; j < l;j++){
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            }
            sb.append("\n");
        }       
        System.out.print(sb);
    } main {

        Scanner sc = new Scanner(System.in);
        String[] data = sc.nextLine().split(" ");
        int n = Integer.parseInt(data[0]);
        int m = Integer.parseInt(data[1]);
        int l = Integer.parseInt(data[2]);

        int[][] listA = new int[n][m];
        int[][] listB = new int[l][m];
        for(int i = 0; i < n; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < m;j++){
                listA[i][j]=Integer.parseInt(strTmp[j]);
            }
        }
        
        for(int i = 0; i < m; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < l;j++){
                listB[j][i]=Integer.parseInt(strTmp[j]);
            }
        }
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < n; i++){
            for(int j = 0; j < l;j++){
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            }
            sb.append("\n");
        }       
        System.out.print(sb);
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String[] data = sc.nextLine().split(" "); data sc.nextLine().split(" ") sc.nextLine().split sc.nextLine() sc.nextLine sc " " int n = Integer.parseInt(data[0]); n Integer.parseInt(data[0]) Integer.parseInt Integer data[0] data 0 int m = Integer.parseInt(data[1]); m Integer.parseInt(data[1]) Integer.parseInt Integer data[1] data 1 int l = Integer.parseInt(data[2]); l Integer.parseInt(data[2]) Integer.parseInt Integer data[2] data 2 int[][] listA = new int[n][m]; listA new int[n][m] n m int[][] listB = new int[l][m]; listB new int[l][m] l m for(int i = 0; i < n; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < m;j++){
                listA[i][j]=Integer.parseInt(strTmp[j]);
            }
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < m;j++){
                listA[i][j]=Integer.parseInt(strTmp[j]);
            }
        } {
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < m;j++){
                listA[i][j]=Integer.parseInt(strTmp[j]);
            }
        } String[] strTmp = sc.nextLine().split(" "); strTmp sc.nextLine().split(" ") sc.nextLine().split sc.nextLine() sc.nextLine sc " " for(int j = 0; j < m;j++){
                listA[i][j]=Integer.parseInt(strTmp[j]);
            } int j = 0; int j = 0; j 0 j < m j m j++ j++ j {
                listA[i][j]=Integer.parseInt(strTmp[j]);
            } {
                listA[i][j]=Integer.parseInt(strTmp[j]);
            } listA[i][j]=Integer.parseInt(strTmp[j]) listA[i][j] listA[i] listA i j Integer.parseInt(strTmp[j]) Integer.parseInt Integer strTmp[j] strTmp j for(int i = 0; i < m; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < l;j++){
                listB[j][i]=Integer.parseInt(strTmp[j]);
            }
        } int i = 0; int i = 0; i 0 i < m i m i++ i++ i {
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < l;j++){
                listB[j][i]=Integer.parseInt(strTmp[j]);
            }
        } {
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < l;j++){
                listB[j][i]=Integer.parseInt(strTmp[j]);
            }
        } String[] strTmp = sc.nextLine().split(" "); strTmp sc.nextLine().split(" ") sc.nextLine().split sc.nextLine() sc.nextLine sc " " for(int j = 0; j < l;j++){
                listB[j][i]=Integer.parseInt(strTmp[j]);
            } int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
                listB[j][i]=Integer.parseInt(strTmp[j]);
            } {
                listB[j][i]=Integer.parseInt(strTmp[j]);
            } listB[j][i]=Integer.parseInt(strTmp[j]) listB[j][i] listB[j] listB j i Integer.parseInt(strTmp[j]) Integer.parseInt Integer strTmp[j] strTmp j StringBuilder sb = new StringBuilder(); sb new StringBuilder() for(int i = 0; i < n; i++){
            for(int j = 0; j < l;j++){
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            }
            sb.append("\n");
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            for(int j = 0; j < l;j++){
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            }
            sb.append("\n");
        } {
            for(int j = 0; j < l;j++){
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            }
            sb.append("\n");
        } for(int j = 0; j < l;j++){
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            } int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            } {
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            } long tmp = 0; tmp 0 for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                } int k = 0; int k = 0; k 0 k < m k m k++ k++ k {
                    tmp+=listA[i][k]*listB[j][k];
                } {
                    tmp+=listA[i][k]*listB[j][k];
                } tmp+=listA[i][k]*listB[j][k] tmp listA[i][k]*listB[j][k] listA[i][k] listA[i] listA i k listB[j][k] listB[j] listB j k if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" "); j==l-1 j l-1 l 1 sb.append(tmp) sb.append sb tmp sb.append(tmp+" ") sb.append sb tmp+" " tmp " " sb.append("\n") sb.append sb "\n" System.out.print(sb) System.out.print System.out System System.out sb String[] args args public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String[] data = sc.nextLine().split(" ");
        int n = Integer.parseInt(data[0]);
        int m = Integer.parseInt(data[1]);
        int l = Integer.parseInt(data[2]);

        int[][] listA = new int[n][m];
        int[][] listB = new int[l][m];
        for(int i = 0; i < n; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < m;j++){
                listA[i][j]=Integer.parseInt(strTmp[j]);
            }
        }
        
        for(int i = 0; i < m; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < l;j++){
                listB[j][i]=Integer.parseInt(strTmp[j]);
            }
        }
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < n; i++){
            for(int j = 0; j < l;j++){
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            }
            sb.append("\n");
        }       
        System.out.print(sb);
    }
} public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String[] data = sc.nextLine().split(" ");
        int n = Integer.parseInt(data[0]);
        int m = Integer.parseInt(data[1]);
        int l = Integer.parseInt(data[2]);

        int[][] listA = new int[n][m];
        int[][] listB = new int[l][m];
        for(int i = 0; i < n; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < m;j++){
                listA[i][j]=Integer.parseInt(strTmp[j]);
            }
        }
        
        for(int i = 0; i < m; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < l;j++){
                listB[j][i]=Integer.parseInt(strTmp[j]);
            }
        }
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < n; i++){
            for(int j = 0; j < l;j++){
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            }
            sb.append("\n");
        }       
        System.out.print(sb);
    }
} Main
import java.util.*;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String[] data = sc.nextLine().split(" ");
        int n = Integer.parseInt(data[0]);
        int m = Integer.parseInt(data[1]);
        int l = Integer.parseInt(data[2]);

        int[][] listA = new int[n][m];
        int[][] listB = new int[l][m];
        for(int i = 0; i < n; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < m;j++){
                listA[i][j]=Integer.parseInt(strTmp[j]);
            }
        }
        
        for(int i = 0; i < m; i++){
            String[] strTmp = sc.nextLine().split(" ");
            for(int j = 0; j < l;j++){
                listB[j][i]=Integer.parseInt(strTmp[j]);
            }
        }
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < n; i++){
            for(int j = 0; j < l;j++){
                long tmp = 0;
                for(int k = 0; k < m;k++){
                    tmp+=listA[i][k]*listB[j][k];
                }
                if(j==l-1) sb.append(tmp);
                else sb.append(tmp+" ");
            }
            sb.append("\n");
        }       
        System.out.print(sb);
    }
}
