#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> Calculate(vector<vector<int>> matrix_1,vector<vector<int>> matrix_2) {
    int x=matrix_1.size();    //x为第一个矩阵的行数
    int y=matrix_2.size();    //y为第一个矩阵的列数
    int z=matrix_2[0].size();    //z为第三个矩阵的列数
    vector<vector<int>> result;    //矩阵result存放乘积的结果
    for(int i=0;i<x;i++) {    //计算矩阵的乘积,并保存在矩阵result中
        vector<int> tmp;    //中间变量tmp
        for(int j=0;j<z;j++) {
            int t = 0;    //累加器
            for(int k=0;k<y;k++) {
                t += matrix_1[i][k]*matrix_2[k][j];    //第一个矩阵的第i行×第二个矩阵的第j列
            }
            tmp.push_back(t);
        }
        result.push_back(tmp);
    }
    return result;    //返回矩阵result
}
int main() {
    int x,y,z;    //x为第一个矩阵的行数,y为第一行矩阵(第二个矩阵)的列数(行数),z为第二个矩阵的列数
    while(cin>>x>>y>>z) {    //分别输入x,y,z的值
        vector<vector<int>> matrix1,matrix2;    //设置两个矩阵matrix1和matrix2
        for(int i=0;i<x;i++) {    //输入第一个矩阵的值,并保存在矩阵matrix1中
            vector<int> tmp;
            for(int j=0;j<y;j++) {
                int t;
                cin>>t;
                tmp.push_back(t);
            }
            matrix1.push_back(tmp);
        }
        for(int i=0;i<y;i++) {    //输入第二个矩阵的值,并保存在矩阵matrix2中
            vector<int> tmp;
            for(int j=0;j<z;j++) {
                int t;
                cin>>t;
                tmp.push_back(t);
            }
            matrix2.push_back(tmp);
        }
        vector<vector<int>> result = Calculate(matrix1, matrix2);    //计算两个矩阵的乘积
        for(int i=0;i<x;i++) {    //输出乘积的结果result矩阵
            for(int j=0;j<z;j++) {
                cout<<result[i][j]<<" ";
            }
            cout<<endl;
        }
    }
    return 0;
}