#include using namespace std; int c[209][209], a[209][209]; int m, n; int sum(int u, int v) { return a[u - 1][v - 1] + a[u - 1][v] + a[u - 1][v + 1] + a[u][v - 1] + a[u][v + 1] + a[u + 1][v - 1] + a[u + 1][v] + a[u + 1][v + 1]; } bool solve(int u, int v) { int new_u, new_v; if (u == m || v == 1) { if (u + v < n) { new_u = 1; new_v = u + v; } else { new_v = n; new_u = u + v + 1 - n; } } else { new_u = u + 1; new_v = v - 1; } // dieu kien ket thuc if (u == m && v == n) { a[u][v] = 0; int check = c[u - 1][v - 1] - sum(u - 1, v - 1); if (check < 0 || check > 1) return false; a[u][v] = check; if (c[u][v-1]!=sum(u,v-1)) return false; if (c[u-1][v]!=sum(u-1,v)) return false; return true; } if (u == 1 || v == 1) { a[u][v] = 0; if (solve(new_u, new_v)) return true; a[u][v] = 1; if (solve(new_u, new_v)) return true; return false; } a[u][v] = 0; int check = c[u - 1][v - 1] - sum(u - 1, v - 1); if (check < 0 || check > 1) return false; a[u][v] = check; if (u == m || v == n) { if (u == m && c[u][v - 1] != sum(u, v - 1)) return false; if (v == n && c[u - 1][v] != sum(u - 1, v)) return false; } if (solve(new_u, new_v)) return true; return false; } bool solve1() { if (m==1){ for (int i=2;i<=n;i++){ a[1][i]=0; int check = c[1][i - 1] - sum(1, i - 1); if (check < 0 || check > 1) return false; a[1][i]=check; } if (c[1][n]==sum(1,n)) return true; return false; } else if (n==1){ for (int i=2;i<=m;i++){ a[i][1]=0; int check = c[i-1][1] - sum(i-1, 1); if (check < 0 || check > 1) return false; a[i][1]=check; } if (c[m][1]==sum(m,1)) return true; return false; } } int main() { #ifdef Keqing freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); #else ios_base::sync_with_stdio(false); cin.tie(NULL); #endif cin >> m >> n; for (int i = 1; i <= m; i++) for (int j = 1; j <= n; j++) cin >> c[i][j]; for (int i = 0; i <= m + 1; i++) { for (int j = 0; j <= n + 1; j++) { a[i][j] = 0; } } for (int i = 0; i <= 1; i++) { a[1][1] = i; if (n==1 || m==1) { if (solve1()) break; } else{ if (solve(1, 2)) break; } } for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) cout << a[i][j] << " "; cout << endl; } }