#include <iostream>
#include <iomanip>//这是为了输出指定位数的double值
//#include <string.h>
using namespace std;
int main()
{ int i,j,a,b;
cin>>a>>b;
double num[a][b];
/*memset(num, 0,sizeof(num));*/
double temp[a][b];
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
cin>>num[i][j];
if(i==0||j==0||i==a-1||j==b-1)
{
temp[i][j]=num[i][j];
/* cout<<num[i][j]<<" ";
cout<<temp[i][j]<<" ";*/
}
}
}
/*for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
cout<<num[i][j]<<" ";
}
cout<<endl;
}*/
for(i=1;i<a-1;i++)
{
for(j=1;j<b-1;j++)
{
temp[i][j]=(num[i][j]+num[i][j-1]+num[i][j+1]+num[i-1][j]+num[i+1][j])/5;
//if(temp[i][j]-(int)temp[i][j]>0.5) temp[i][j]++;
/*cout<<temp[i][j]<<" ";*/
}
/*cout<<endl;*/
}
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
cout <<fixed<< setprecision(0) << temp[i][j] <<" ";
}
cout<<endl;
}
}
/*计算鞍点:
1.这道题思路很简单,但是我一直交不上去,后来查阅正确代码发现原来是没有注意题目中括号中的提示----(舍入到最接近的整数)。
2.这道题让我发现double只输出整数部分时候会自动四舍五入 */