#include <iostream>
using namespace std;
int main()
{
int x,y;
cin>>x>>y;
int map[x][y];
bool flag[x][y];
//padding
int temp[x+2][y+2];
for(int i=0;i<x;i++)
for(int j=0;j<y;j++)
{
cin>>map[i][j];
flag[i][j]=0;
}
for(int i=0;i<=x+1;i++)
{
for(int j=0;j<=y+1;j++)
{
if(i==0||i==x+1||j==0||j==y+1)
temp[i][j]=0;
else
temp[i][j]=map[i-1][j-1];
}
}
//对于原图中每一个元素,进行上下搜索,左右搜索,看是否能连成三个,能的话三个的flag相应位置都标为1
for(int i=1;i<=x;i++)
{
for(int j=1;j<=y;j++)
{
//左右
if(temp[i][j]==temp[i][j-1]&&temp[i][j]==temp[i][j+1])
{
flag[i-1][j-1]=1;
flag[i-1][j-2]=1;
flag[i-1][j]=1;
}
//上下
if(temp[i][j]==temp[i-1][j]&&temp[i][j]==temp[i+1][j])
{
flag[i-1][j-1]=1;
flag[i-2][j-1]=1;
flag[i][j-1]=1;
}
}
}
//原图中对应flag为1的位置都置0,代表消去
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
if(flag[i][j])
map[i][j]=0;
}
}
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
if(j<y-1)
cout<<map[i][j]<<" ";
else
cout<<map[i][j];
}
if(i<x-1)
cout<<endl;
}
return 0;
}