#include <iostream>
using namespace std;
int a[10][10];
int i,j,k;
bool okk(int i1,int i2,int j1,int j2)
{
int f[10];
bool w;
memset(f,0,sizeof(f));
for (i=i1; i<=i2; i++)
for (j=j1; j<=j2; j++)
f[a[i][j]]++;
w=true;
for (k=1; k<=9; k++)
if (f[k]>1) {w=false; break;}
return w;
}
bool ook()
{
int f[10];
bool w;
for (i=1; i<=9; i++)
{
memset(f,0,sizeof(f));
for (j=1; j<=9; j++)
f[a[i][j]]++;
w=true;
for (k=1; k<=9; k++)
if (f[k]>1) {w=false; break;}
if (!w) break;
}
if (!w) return false;
for (j=1; j<=9; j++)
{
memset(f,0,sizeof(f));
for (i=1; i<=9; i++)
f[a[i][j]]++;
w=true;
for (k=1; k<=9; k++)
if (f[k]>1) {w=false; break;}
if (!w) break;
}
if (!w) return false;
if (!okk(1,3,1,3)) return false;
if (!okk(1,3,4,6)) return false;
if (!okk(1,3,7,9)) return false;
if (!okk(4,6,1,3)) return false;
if (!okk(4,6,4,6)) return false;
if (!okk(4,6,4,6)) return false;
if (!okk(7,9,1,3)) return false;
if (!okk(7,9,4,6)) return false;
if (!okk(7,9,7,9)) return false;
return true;
}
void dfs()
{
int x,y,v;
bool ok;
if (ook())
{
ok=false;
for (x=1; x<=9; x++)
{
for (y=1; y<=9; y++)
if (a[x][y]==0) {ok=true; break;}
if (ok) break;
}
if (ok)
{
for (v=1; v<=9; v++)
{
a[x][y]=v;
dfs();
a[x][y]=0;
}
}
else
{
for (i=1; i<=9; i++)
{
for (j=1; j<=9; j++)
cout << a[i][j] << " ";
cout << endl;
}
cout << endl;
}
}
}
int main()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
for (i=1; i<=9; i++)
for (j=1; j<=9; j++)
cin >> a[i][j];
dfs();
return 0;
}
using namespace std;
int a[10][10];
int i,j,k;
bool okk(int i1,int i2,int j1,int j2)
{
int f[10];
bool w;
memset(f,0,sizeof(f));
for (i=i1; i<=i2; i++)
for (j=j1; j<=j2; j++)
f[a[i][j]]++;
w=true;
for (k=1; k<=9; k++)
if (f[k]>1) {w=false; break;}
return w;
}
bool ook()
{
int f[10];
bool w;
for (i=1; i<=9; i++)
{
memset(f,0,sizeof(f));
for (j=1; j<=9; j++)
f[a[i][j]]++;
w=true;
for (k=1; k<=9; k++)
if (f[k]>1) {w=false; break;}
if (!w) break;
}
if (!w) return false;
for (j=1; j<=9; j++)
{
memset(f,0,sizeof(f));
for (i=1; i<=9; i++)
f[a[i][j]]++;
w=true;
for (k=1; k<=9; k++)
if (f[k]>1) {w=false; break;}
if (!w) break;
}
if (!w) return false;
if (!okk(1,3,1,3)) return false;
if (!okk(1,3,4,6)) return false;
if (!okk(1,3,7,9)) return false;
if (!okk(4,6,1,3)) return false;
if (!okk(4,6,4,6)) return false;
if (!okk(4,6,4,6)) return false;
if (!okk(7,9,1,3)) return false;
if (!okk(7,9,4,6)) return false;
if (!okk(7,9,7,9)) return false;
return true;
}
void dfs()
{
int x,y,v;
bool ok;
if (ook())
{
ok=false;
for (x=1; x<=9; x++)
{
for (y=1; y<=9; y++)
if (a[x][y]==0) {ok=true; break;}
if (ok) break;
}
if (ok)
{
for (v=1; v<=9; v++)
{
a[x][y]=v;
dfs();
a[x][y]=0;
}
}
else
{
for (i=1; i<=9; i++)
{
for (j=1; j<=9; j++)
cout << a[i][j] << " ";
cout << endl;
}
cout << endl;
}
}
}
int main()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
for (i=1; i<=9; i++)
for (j=1; j<=9; j++)
cin >> a[i][j];
dfs();
return 0;
}