
#include<cstdio>
#include<iostream>
using namespace std;
const int MAXX=2e2,MAXY=2e2;
struct Mat{
int x,y;
int a[MAXX][MAXY];
};
Mat mull(Mat a,Mat b){
Mat c;
c.x=b.x,c.y=a.y;
for(int i=1;i<=c.x;i++){
for(int j=1;j<=c.y;j++){
for(int k=1;k<=a.x;k++)
c.a[j][i]=c.a[j][i]+a.a[j][k]*b.a[k][i];
}
}
return c;
}
int main(){
int x1,y1,x2,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
Mat a,b;
a.x=x1,a.y=y1,b.x=x2,b.y=y2;
for(int j=1;j<=y1;j++){
for(int i=1;i<=x1;i++){
scanf("%d",&a.a[j][i]);
}
}
for(int j=1;j<=y2;j++){//
for(int i=1;i<=x2;i++){
scanf("%d",&b.a[j][i]);
}
}
Mat ans=mull(a,b);
for(int i=1;i<=ans.y;i++){
for(int j=1;j<=ans.x;j++){
printf("%d ",ans.a[i][j]);
}
printf("\n");
}
return 0;
}