#include<bits/stdc++.h>
#define ll long long
#define endl "\n"
#define F first
#define S second
#define loop(a,n) for(int i=a; i<=n ; i++)
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
#define NAME ""
using namespace std;
int m,n;
int a[105][105];
int res[105][105];
bool found = false;
int dx[] = {-1,1,0,0};
int dy[] = {0,0,-1,1};
bool val(int x,int y) {
return x>=1 && x<=m && y>=1 && y<=n;
}
int dem(int i,int j) {
int cnt=0;
for (int d=0;d<4;++d) {
int ni=i+dx[d];
int nj=j+dy[d];
if (val(ni,nj) && res[ni][nj]==1)
cnt++;
}
return cnt;
}
bool check() {
for(int i=1;i<=m;++i)
for(int j=1;j<=n;++j)
if (dem(i,j) != a[i][j])
return false;
return true;
}
void backtrack(int i,int j) {
if (found) return;
if (i==m+1) {
if (check()) {
found = true;
}
return;
}
int ni=i, nj=j+1;
if (nj==n+1) {
ni=i+1;
nj=1;
}
res[i][j]=0;
backtrack(ni,nj);
if (found) return;
res[i][j]=1;
backtrack(ni,nj);
if (found) return;
}
void nhap(){
cin>>m>>n;
for(int i=1;i<=m;++i)
for(int j=1;j<=n;++j)
cin >> a[i][j];
}
void solve(){
backtrack(1,1);
if (!found) cout<<0;
else {
cout<<1<<endl;
for(int i=1;i<=m;++i) {
for(int j=1;j<=n;++j)
cout<<res[i][j] << ' ';
cout<<endl;
}
}
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
//freopen(NAME".INP","r",stdin);
//freopen(NAME".OUT","w",stdout);
nhap();
solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbmRsICJcbiIKI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSBsb29wKGEsbikgZm9yKGludCBpPWE7IGk8PW4gOyBpKyspCiNkZWZpbmUgVElNRSAoMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDKQojZGVmaW5lIE5BTUUgIiIKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtLG47CmludCBhWzEwNV1bMTA1XTsKaW50IHJlc1sxMDVdWzEwNV07CmJvb2wgZm91bmQgPSBmYWxzZTsKCmludCBkeFtdID0gey0xLDEsMCwwfTsKaW50IGR5W10gPSB7MCwwLC0xLDF9OwoKYm9vbCB2YWwoaW50IHgsaW50IHkpIHsKICAgIHJldHVybiB4Pj0xICYmIHg8PW0gJiYgeT49MSAmJiB5PD1uOwp9CmludCBkZW0oaW50IGksaW50IGopIHsKICAgIGludCBjbnQ9MDsKICAgIGZvciAoaW50IGQ9MDtkPDQ7KytkKSB7CiAgICAgICAgaW50IG5pPWkrZHhbZF07CiAgICAgICAgaW50IG5qPWorZHlbZF07CiAgICAgICAgaWYgKHZhbChuaSxuaikgJiYgcmVzW25pXVtual09PTEpCiAgICAgICAgICAgIGNudCsrOwogICAgfQogICAgcmV0dXJuIGNudDsKfQpib29sIGNoZWNrKCkgewogICAgZm9yKGludCBpPTE7aTw9bTsrK2kpCiAgICAgICAgZm9yKGludCBqPTE7ajw9bjsrK2opCiAgICAgICAgICAgIGlmIChkZW0oaSxqKSAhPSBhW2ldW2pdKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHRydWU7Cn0Kdm9pZCBiYWNrdHJhY2soaW50IGksaW50IGopIHsKICAgIGlmIChmb3VuZCkgcmV0dXJuOwogICAgaWYgKGk9PW0rMSkgewogICAgICAgIGlmIChjaGVjaygpKSB7CiAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG5pPWksIG5qPWorMTsKICAgIGlmIChuaj09bisxKSB7CiAgICAgICAgbmk9aSsxOwogICAgICAgIG5qPTE7CiAgICB9CgogICAgcmVzW2ldW2pdPTA7CiAgICBiYWNrdHJhY2sobmksbmopOwogICAgaWYgKGZvdW5kKSByZXR1cm47CiAgICByZXNbaV1bal09MTsKICAgIGJhY2t0cmFjayhuaSxuaik7CiAgICBpZiAoZm91bmQpIHJldHVybjsKfQp2b2lkIG5oYXAoKXsKICAgIGNpbj4+bT4+bjsKICAgIGZvcihpbnQgaT0xO2k8PW07KytpKQogICAgICAgIGZvcihpbnQgaj0xO2o8PW47KytqKQogICAgICAgICAgICBjaW4gPj4gYVtpXVtqXTsgICAgCn0Kdm9pZCBzb2x2ZSgpewogICAgYmFja3RyYWNrKDEsMSk7CiAgICBpZiAoIWZvdW5kKSBjb3V0PDwwOwogICAgZWxzZSB7CiAgICAgICAgY291dDw8MTw8ZW5kbDsKICAgICAgICBmb3IoaW50IGk9MTtpPD1tOysraSkgewogICAgICAgICAgICBmb3IoaW50IGo9MTtqPD1uOysraikKICAgICAgICAgICAgICAgIGNvdXQ8PHJlc1tpXVtqXSA8PCAnICc7CiAgICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgfQogICAgfQp9CmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIC8vZnJlb3BlbihOQU1FIi5JTlAiLCJyIixzdGRpbik7CiAgICAvL2ZyZW9wZW4oTkFNRSIuT1VUIiwidyIsc3Rkb3V0KTsKICAgIG5oYXAoKTsKICAgIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQo=