#include <bits/stdc++.h>
using namespace std;
int main1(){
//二维数组
//n代表行,m代表列
// int a[4][3] = {
// //第0列
// 1,2,3,//第0行
// 4,5,6,
// 7,8,9,
// 0,0,0
// };
//输入数组
int n,m;
cin >> n>>m;
int a[n][m];
for(int i = 0 ;i<n;i++){//外层i->行
for(int j = 0;j<m;j++){//j->列
cin>>a[i][j];
}
}
//遍历数组
for(int i = 0 ;i<n;i++){//外层i->行
for(int j = 0;j<m;j++){//j->列
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
int main2(){
int a[4][3] = {
//第0列
1,2,3,//第0行
4,5,6,
7,8,9,
0,0,0
};
for(int i = 0 ;i<4;i++){
cout<<a[i][0]<<endl;
}
return 0;
}
//统计奇偶数
int main3(){
int n,m;
cin >> n>>m;
int a[n][m];
//输入
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
cin >> a[i][j];
}
}
//遍历
int b=0,c=0;
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
if(a[i][j]%2==0){
c++;
}else{
b++;
}
}
}
cout<<b<<" "<<c<<endl;
return 0;
}
int main(){
int n,m;
cin >> n>>m;
int a[n][m],b[n][m];
//输入数组1
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
cin >> a[i][j];
}
}
//输入数组2
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
cin >> b[i][j];
}
}
//A+B
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
cout<<a[i][j]+b[i][j]<<" ";
}
cout<<endl;
}
return 0;
}