#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int rows;
int cols;
char press[100][100];
char puzzle[100][100];
bool guess() {
int i, j;
for (i = 2; i <= rows; i++) {
for (j = 1; j <= cols; j++) {
press[i][j] = ( press[i-1][j]
+ puzzle[i-1][j]
+ press[i-1][j-1]
+ press[i-2][j]
+ press[i-1][j+1] ) % 2;
}
}
for (j = 1; j <= cols; j++) {
if (puzzle[rows][j] != (press[rows][j] + press[rows][j-1] + press[rows][j+1] + press[rows-1][j]) % 2)
return false;
}
return true;
}
void process() {
int c;
for (c = 1; c <= cols; c++)
press[1][c] = 0;
while (!guess()) {
press[1][1]++;
c = 1;
while (press[1][c] > 1) {
press[1][c] = 0;
c++;
press[1][c]++;
}
}
}
void init() {
for (int i = 0; i < cols + 2; i++)
press[0][i] = puzzle[0][i] = 0;
for (int i = 1; i <= rows; i++)
press[i][0] = puzzle[i][0] = press[i][cols+1] = puzzle[i][cols+1] = 0;
for (int i = 1; i <= rows; i++)
for (int j = 1; j <= cols; j++)
scanf("%d", (int*)&puzzle[i][j]);
}
void print() {
for (int i = 1; i <= rows; i++){
for (int j = 1; j <= cols; j++) {
printf("%d ", press[i][j]);
}
printf("\n");
}
}
int main(int argc, char **argv) {
if (argc < 3) {
puts("usage: lightoff rows cols");
return 1;
}
rows = atoi(argv[1]);
cols = atoi(argv[2]);
init();
process();
print();
return 0;
}