import java.io.*;
class metrixmulti
{
public static void main(String args[])throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("entre the number of rows and collum in metrix 1");
int r1=Integer.parseInt(br.readLine());
int c1=Integer.parseInt(br.readLine());
System.out.println("entre the number of rows and collum in metrix 2");
int r2=Integer.parseInt(br.readLine());
int c2=Integer.parseInt(br.readLine());
int a[][]=new int[r1][c1];
int b[][]=new int [r2][c2];
if(c1==r2)
{
System.out.println("entre the elements for metrix 1");
for(int i=0;i<r1;i++)
{
for(int j=0;j<r2;j++)
{
a[i][j]=Integer.parseInt(br.readLine());
}
}
System.out.println("entre the elements for metrix 2");
for(int i=0;i<r2;i++)
{
for(int j=0;j<c2;j++)
{
b[i][j]=Integer.parseInt(br.readLine());
}
}
System.out.println("the metrixes are");
for(int i=0;i<r1;i++)
{
for(int j=0;j<c1;j++)
{
System.out.print(a[i][j]+" ");
}
System.out.println();
}
for(int i=0;i<r2;i++)
{
for(int j=0;j<c2;j++)
{
System.out.print(b[i][j]+" ");
}
System.out.println();
}
int c[][]=new int[r1][c2];
for(int i=0;i<r1;i++)
{
for(int j=0;j<c2;j++)
{
c[i][j]=0;
for(int k=0;k<r2;k++)
{
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
}
}
}
System.out.println("the reqired metrix ");
for(int i=0;i<r1;i++)
{
for(int j=0;j<c2;j++)
{
System.out.print(c[i][j]+" ");
}
System.out.println();
}
}
}
}