扫雷X
题号:NC214177
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述


今天是周末,冰姐和轩轩在宿舍一起玩扫雷。
扫雷的规则是这样的:在列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。
冰姐觉得这样的规则有些无聊,便修改了非地雷格。修改后的非地雷格会显示以当前格子为中心的X区域有多少个是地雷(X的两条边会一直延伸到雷区边界)。
现在给出列的雷区中的地雷分布,要求计算出每个非地雷格以当前格子为中心的X区域的地雷个数

下图所示的非地雷格的X区域有3个地雷。


输入描述:

第一行是用一个空格隔开的两个整数,分别表示雷区的行数和列数。
接下来行,每行个数字,描述了雷区中的地雷分布情况。
数字表示相应格子是地雷格,数字表示相应格子是非地雷格。

输出描述:

输出包含行,每行个数字,描述整个雷区。用表示地雷格,用以非地雷格为中心X型区域的地雷个数表示非地雷格。

示例1

输入

复制
6 6
-1 0 -1 0 -1 -1
0 -1 0 0 -1 -1
0 -1 0 0 0 0
-1 0 -1 0 0 0
0 0 0 0 -1 0
0 0 0 -1 0 -1

输出

复制
-1 0 -1 3 -1 -1
2 -1 2 2 -1 -1
3 -1 5 3 2 1
-1 2 -1 5 0 3
1 4 2 2 -1 0
3 1 1 -1 2 -1

说明

样例中非地雷格的X区域的地雷个数如下图所示