#include<bits/stdc++.h>
using namespace std;
const int N=110;
struct matrix{
int n,m,g[N][N];
matrix operator*(const matrix&b)const{
matrix c;c.n=n;c.m=b.m;
memset(c.g,0,sizeof(c.g));
for(int i=1;i<=n;i++)
for(int k=1;k<=m;k++)
for(int j=1;j<=b.m;j++)
c.g[i][j]=c.g[i][j]+g[i][k]*b.g[k][j];
return c;
}
};
int main(){
int a,b,c,d;
cin>>a>>b>>c>>d;
matrix x={a,b};
matrix y={c,d};
for(int i=1;i<=a;i++)
for(int j=1;j<=b;j++)
cin>>x.g[i][j];
for(int i=1;i<=c;i++)
for(int j=1;j<=d;j++)
cin>>y.g[i][j];
matrix z=x*y;
for(int i=1;i<=a;i++)
for(int j=1;j<=d;j++)
printf("%d ",z.g[i][j]);
return 0;
}