#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
// 初始化三个视图的二维数组
vector<vector<int>> front_view(n, vector<int>(m, 0)); // 正视图
vector<vector<int>> left_view(m, vector<int>(n, 0)); // 左视图
vector<vector<int>> top_view(m, vector<int>(n, 0)); // 俯视图
// 读取区域的状态
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
int status;
cin >> status;
// 根据每个格子的状态填充三个视图的对应位置
if (status == 1) {
front_view[i][j] = 1; // 正视图
left_view[j][n - 1 - i] = 1; // 左视图
top_view[j][i] = 1; // 俯视图
}
}
}
// 输出三个视图
// 正视图
for (int i = 0; i < n; ++i) {
cout << front_view[i][0];
for (int j = 1; j < m; ++j) {
cout << " " << front_view[i][j];
}
cout << endl;
}
// 左视图
for (int i = 0; i < m; ++i) {
cout << left_view[i][0];
for (int j = 1; j < n; ++j) {
cout << " " << left_view[i][j];
}
cout << endl;
}
// 俯视图
for (int i = 0; i < m; ++i) {
cout << top_view[i][0];
for (int j = 1; j < n; ++j) {
cout << " " << top_view[i][j];
}
cout << endl;
}
return 0;
}