/*
String[]の初期化、整数の型がlongになっているか
関数（splitとかcontainsとか）内では"+"とかは正規表現となされるので"\\+"とする
配列のコピーはarr1=arr.clone()
HashSet<>[]はおのおの初期化した？？？？？
負の数の割り算は絶対値が小さいほうに切り捨てられるex.-1/2=0ので、ある値>kみたいな式だとバグらせやすいので注意
ある値>=kとして、切り上げた値をとるべき
 */
import java.util.*;
import java.awt.*;
import java.awt.Graphics.*;
import static java.lang.System.*;
import static java.lang.Math.*;
public class Main {
    public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int n=sc.nextInt(),m=sc.nextInt(),l=sc.nextInt();
        int[][] a=new int[n][m];
        int[][] b=new int[m][l];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                a[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < l; j++) {
                b[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            }
        }
    }
} import java.util.*; util.* java import java.awt.*; awt.* java import java.awt.Graphics.*; Graphics.* java.awt import static java.lang.System.*; import static java.lang.System.*; import static java.lang.System.*; import static java.lang.Math.*; import static java.lang.Math.*; import static java.lang.Math.*; public class Main {
    public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int n=sc.nextInt(),m=sc.nextInt(),l=sc.nextInt();
        int[][] a=new int[n][m];
        int[][] b=new int[m][l];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                a[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < l; j++) {
                b[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            }
        }
    }
} Main public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int n=sc.nextInt(),m=sc.nextInt(),l=sc.nextInt();
        int[][] a=new int[n][m];
        int[][] b=new int[m][l];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                a[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < l; j++) {
                b[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            }
        }
    } main {
        Scanner sc = new Scanner(in);
        int n=sc.nextInt(),m=sc.nextInt(),l=sc.nextInt();
        int[][] a=new int[n][m];
        int[][] b=new int[m][l];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                a[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < l; j++) {
                b[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            }
        }
    } Scanner sc = new Scanner(in); sc new Scanner(in) int n=sc.nextInt() n sc.nextInt() sc.nextInt sc m=sc.nextInt() m sc.nextInt() sc.nextInt sc 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 for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                a[i][j]=sc.nextInt();
            }
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            for (int j = 0; j < m; j++) {
                a[i][j]=sc.nextInt();
            }
        } {
            for (int j = 0; j < m; j++) {
                a[i][j]=sc.nextInt();
            }
        } for (int j = 0; j < m; j++) {
                a[i][j]=sc.nextInt();
            } int j = 0; int j = 0; j 0 j < m j m j++ j++ j {
                a[i][j]=sc.nextInt();
            } {
                a[i][j]=sc.nextInt();
            } a[i][j]=sc.nextInt() a[i][j] a[i] a i j sc.nextInt() sc.nextInt sc for (int i = 0; i < m; i++) {
            for (int j = 0; j < l; j++) {
                b[i][j]=sc.nextInt();
            }
        } int i = 0; int i = 0; i 0 i < m i m i++ i++ i {
            for (int j = 0; j < l; j++) {
                b[i][j]=sc.nextInt();
            }
        } {
            for (int j = 0; j < l; j++) {
                b[i][j]=sc.nextInt();
            }
        } for (int j = 0; j < l; j++) {
                b[i][j]=sc.nextInt();
            } int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
                b[i][j]=sc.nextInt();
            } {
                b[i][j]=sc.nextInt();
            } b[i][j]=sc.nextInt() b[i][j] b[i] b i j sc.nextInt() sc.nextInt sc for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            }
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            for (int j = 0; j < l; j++) {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            }
        } {
            for (int j = 0; j < l; j++) {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            }
        } for (int j = 0; j < l; j++) {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            } int j = 0; int j = 0; j 0 j < l j l j++ j++ j {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            } {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            } long c=0; c 0 for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                } int k = 0; int k = 0; k 0 k < m k m k++ k++ k {
                    c+=(long) a[i][k]*(long) b[k][j];
                } {
                    c+=(long) a[i][k]*(long) b[k][j];
                } c+=(long) a[i][k]*(long) b[k][j] c (long) a[i][k]*(long) b[k][j] (long) a[i][k] a[i] a i k (long) b[k][j] b[k] b k j out.print(c) out.print out c if(j!=l-1)out.print(" ");
                else out.println(); j!=l-1 j l-1 l 1 out.print(" ") out.print out " " out.println() out.println out String[] $ $ public class Main {
    public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int n=sc.nextInt(),m=sc.nextInt(),l=sc.nextInt();
        int[][] a=new int[n][m];
        int[][] b=new int[m][l];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                a[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < l; j++) {
                b[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            }
        }
    }
} public class Main {
    public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int n=sc.nextInt(),m=sc.nextInt(),l=sc.nextInt();
        int[][] a=new int[n][m];
        int[][] b=new int[m][l];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                a[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < l; j++) {
                b[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            }
        }
    }
} Main
/*
String[]の初期化、整数の型がlongになっているか
関数（splitとかcontainsとか）内では"+"とかは正規表現となされるので"\\+"とする
配列のコピーはarr1=arr.clone()
HashSet<>[]はおのおの初期化した？？？？？
負の数の割り算は絶対値が小さいほうに切り捨てられるex.-1/2=0ので、ある値>kみたいな式だとバグらせやすいので注意
ある値>=kとして、切り上げた値をとるべき
 */
import java.util.*;
import java.awt.*;
import java.awt.Graphics.*;
import static java.lang.System.*;
import static java.lang.Math.*;
public class Main {
    public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int n=sc.nextInt(),m=sc.nextInt(),l=sc.nextInt();
        int[][] a=new int[n][m];
        int[][] b=new int[m][l];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                a[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < l; j++) {
                b[i][j]=sc.nextInt();
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < l; j++) {
                long c=0;
                for (int k = 0; k < m; k++) {
                    c+=(long) a[i][k]*(long) b[k][j];
                }
                out.print(c);
                if(j!=l-1)out.print(" ");
                else out.println();
            }
        }
    }
}
