// 矩阵的加法:
//代码如下:
#include <cstdio>
const int maxn = 77;
int a[maxn][maxn],b[maxn][maxn],c[maxn][maxn];
int main()
{
int n,m;
while (~scanf ("%d%d",&n,&m))
{
for (int i = 0 ; i < n ; i++)
for (int j = 0 ; j < m ; j++)
scanf ("%d",&a[i][j]);
for (int i = 0 ; i < n ; i++)
for (int j = 0 ; j < m ; j++)
scanf ("%d",&b[i][j]);
for (int i = 0 ; i < n ; i++)
for (int j = 0 ; j < m ; j++)
c[i][j] = a[i][j] + b[i][j];
for (int i = 0 ; i < n ; i++)
{
for (int j = 0 ; j < m ; j++)
{
if (j==0)
printf ("%d",c[i][j]);
else
printf (" %d",c[i][j]);
}
printf ("\n");
}
}
return 0;
}
// 矩阵的乘法:
//代码如下:
#include <stdio.h>
int main()
{
int m,s,n;
int c[222][222],a[222][222],b[222][222];
int t;
scanf ("%d",&t);
while (t--)
{
scanf ("%d%d",&m,&s);
for (int i = 0 ; i < m ; i++)
for (int j = 0 ; j < s ; j++)
scanf ("%d",&a[i][j]);
int p,q;
scanf ("%d%d",&p,&q);
for (int i = 0 ; i < p ; i++)
for (int j = 0 ; j < q ; j++)
scanf ("%d",&b[i][j]);
if (s != p)
{
printf("NO\n");
}
else
{
for (int i = 0 ; i < m ; i++)
{
for (int j = 0 ; j < q ; j++)
{
c[i][j] = 0;
for (int k = 0 ; k < p ; k++)
c[i][j] += a[i][k]*b[k][j];
}
}
printf ("YES\n");
for (int i = 0 ; i < m ; i++)
{
for (int j = 0 ; j < q ; j++)
{
if (j == 0)
printf ("%d",c[i][j]);
else
printf (" %d",c[i][j]);
}
printf ("\n");
}
}
}
return 0;
}