#include<bits/stdc++.h>
#pragma GCC opzimize(2)
#define N 101
#define M 101
int a[N][M],b[N][M],c[N][M];
using namespace std;
inline long long read(){
long long ans=0,f=1;
char ch=getchar();
if(ch=='-'){
f=-1;
}
while(!isdigit(ch)){
ch=getchar();
}
while(isdigit(ch)){
ans=((ans<<1)+(ans<<3)+(ch^48));
ch=getchar();
}
return ans*f;
}
int main(){
int n=read(),m=read();
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
a[i][j]=read();
}
}
int p=read();
for(int i=1;i<=m;i++){
for(int j=1;j<=p;j++){
b[i][j]=read();
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=p;j++){
c[i][j]=0;
for(int k=1;k<=m;k++){
c[i][j]+=a[i][k]*b[k][j];
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=p;j++){
cout<<c[i][j]<<" ";
}
cout<<endl;
}
return 0;
}