#820. 费解的开关

费解的开关

问题描述

M×N 盏灯排成一个矩形。

每一个灯都有一个开关按钮,游戏者可以通过按钮改变灯的状态。

每一步,游戏者可以选择某一个灯的开关按一下从而改变该灯状态。

游戏者改变一个灯的状态会产生连锁反应:和这个灯上、下、左、右相邻的灯也会相应地改变其状态。

我们用数字 1 表示一盏开着的灯,用数字 0 表示一盏关着的灯。

给定灯的初始状态,最少经过多少步,可以使所有的灯都关上呢?

你只需要输出最终每盏灯的开关被按了多少次。

输入格式

第一行:M, N。

接下来一个 M×N 的 01 矩阵,表示灯的初始状态。

输出格式

如果无法使所有灯都关上,则输出 IMPOSSIBLE

否则输出一个 M×N 的矩阵,其中第 ii 行的第 jj 个数代表第 ii 行第 jj 列的灯的开关被按了多少次。

如果存在多种方案,输出字典序最小(即把输出的矩阵元素按从上到下从左到右的顺序形成的序列的字典序最小)的方案。

样例输入

4 4
1 0 0 1
0 1 1 0
0 1 1 0
1 0 0 1

样例输出

0 0 0 0 	
1 0 0 1 	
1 0 0 1 	
0 0 0 0

数据规模

60% 的数据:1M,N51 ≤ M, N ≤ 5

100% 的数据:1M,N151 ≤ M, N ≤ 15