#include <iostream>
using namespace std;
const int maxn = 1010;
int multi(int num_a, int num_b){
int ret = 0;
while(num_b > 0){
if(num_b & 1){
ret = (ret + num_a);
}
num_b >>= 1;
num_a = (num_a << 1);
}
return ret;
}
int main(){
int a[maxn][maxn], b[maxn][maxn];
int c[maxn][maxn];
int m, n, k;
cin>>m>>k>>n;
for(int i = 0; i < m; i++){
for(int j = 0; j < k; j++){
cin>>a[i][j];
}
}
for(int i = 0; i < k; i++){
for(int j = 0; j < n; j++){
cin>>b[i][j];
}
}
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
c[i][j] = 0;
for(int l = 0; l < k; l++){
c[i][j] +=multi(a[i][l], b[l][j]) ;
}
}
}
for(int i=0;i<m;i++){
for(int j = 0;j<n;j++) {
if(j == n-1){
cout<<c[i][j]<<endl;
}else{
cout<<c[i][j]<<" ";
}
}
}
return 0;
}