#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;
}