#include <bits/stdc++.h>
using namespace std;
const int N=10;
int n, a[N][N], x[N][N];
bool row[N][10], col[N][10], cell[N][10];
int getcell(int i, int j)
{
return (i-1)/3*3+(j-1)/3;
}
bool check()
{
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
if(a[i][j]==0 && x[i][j]==0) return false;
}
}
return true;
}
void print()
{
for(int i=1;i<=n;++i){
cout << i << ": ";
for(int j=1;j<=n;++j){
if(x[i][j]!=0) cout << x[i][j] << ' ';
}
cout << '\n';
}
exit(0);
}
bool btrack(int i, int j)
{
if(i>n || j>n){
if(check())
print();
return false;
}
if(a[i][j]==0){
bool ok=false;
for(int d=1;d<=n;++d){
if(row[i][d] || col[j][d]) continue;
if(cell[getcell(i, j)][d]) continue;
ok=true;
x[i][j]=d;
row[i][d]=1;
col[j][d]=1;
cell[getcell(i, j)][d]=1;
if(j==n) ok=btrack(i+1, 1);
else ok=btrack(i, j+1);
x[i][j]=0;
row[i][d]=0;
col[j][d]=0;
cell[getcell(i, j)][d]=0;
}
if(!ok) return false;
}
if(j==n) btrack(i+1, 1);
else btrack(i, j+1);
return false;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n;
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
cin >> a[i][j];
row[i][a[i][j]]=1;
col[j][a[i][j]]=1;
cell[getcell(i, j)][a[i][j]]=1;
}
}
btrack(1, 1);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTj0xMDsKaW50IG4sIGFbTl1bTl0sIHhbTl1bTl07CmJvb2wgcm93W05dWzEwXSwgY29sW05dWzEwXSwgY2VsbFtOXVsxMF07CgppbnQgZ2V0Y2VsbChpbnQgaSwgaW50IGopCnsKICAgIHJldHVybiAoaS0xKS8zKjMrKGotMSkvMzsKfQoKYm9vbCBjaGVjaygpCnsKICAgIGZvcihpbnQgaT0xO2k8PW47KytpKXsKICAgICAgICBmb3IoaW50IGo9MTtqPD1uOysrail7CiAgICAgICAgICAgIGlmKGFbaV1bal09PTAgJiYgeFtpXVtqXT09MCkgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB0cnVlOwp9Cgp2b2lkIHByaW50KCkKewogICAgZm9yKGludCBpPTE7aTw9bjsrK2kpewogICAgICAgIGNvdXQgPDwgaSA8PCAiOiAiOwogICAgICAgIGZvcihpbnQgaj0xO2o8PW47KytqKXsKICAgICAgICAgICAgaWYoeFtpXVtqXSE9MCkgY291dCA8PCB4W2ldW2pdIDw8ICcgJzsKICAgICAgICB9CiAgICAgICAgY291dCA8PCAnXG4nOwogICAgfQogICAgZXhpdCgwKTsKfQoKYm9vbCBidHJhY2soaW50IGksIGludCBqKQp7CiAgICBpZihpPm4gfHwgaj5uKXsKICAgICAgICBpZihjaGVjaygpKQogICAgICAgICAgICBwcmludCgpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGlmKGFbaV1bal09PTApewogICAgICAgIGJvb2wgb2s9ZmFsc2U7CiAgICAgICAgZm9yKGludCBkPTE7ZDw9bjsrK2QpewogICAgICAgICAgICBpZihyb3dbaV1bZF0gfHwgY29sW2pdW2RdKSBjb250aW51ZTsKICAgICAgICAgICAgaWYoY2VsbFtnZXRjZWxsKGksIGopXVtkXSkgY29udGludWU7CiAgICAgICAgICAgIG9rPXRydWU7CiAgICAgICAgICAgIHhbaV1bal09ZDsKICAgICAgICAgICAgcm93W2ldW2RdPTE7CiAgICAgICAgICAgIGNvbFtqXVtkXT0xOwogICAgICAgICAgICBjZWxsW2dldGNlbGwoaSwgaildW2RdPTE7CiAgICAgICAgICAgIGlmKGo9PW4pIG9rPWJ0cmFjayhpKzEsIDEpOwogICAgICAgICAgICBlbHNlIG9rPWJ0cmFjayhpLCBqKzEpOwogICAgICAgICAgICB4W2ldW2pdPTA7CiAgICAgICAgICAgIHJvd1tpXVtkXT0wOwogICAgICAgICAgICBjb2xbal1bZF09MDsKICAgICAgICAgICAgY2VsbFtnZXRjZWxsKGksIGopXVtkXT0wOwogICAgICAgIH0KICAgICAgICBpZighb2spIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGlmKGo9PW4pIGJ0cmFjayhpKzEsIDEpOwogICAgZWxzZSBidHJhY2soaSwgaisxKTsKICAgIHJldHVybiBmYWxzZTsKfQoKc2lnbmVkIG1haW4oKQp7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgIGNpbiA+PiBuOwogICAgZm9yKGludCBpPTE7aTw9bjsrK2kpewogICAgICAgIGZvcihpbnQgaj0xO2o8PW47KytqKXsKICAgICAgICAgICAgY2luID4+IGFbaV1bal07CiAgICAgICAgICAgIHJvd1tpXVthW2ldW2pdXT0xOwogICAgICAgICAgICBjb2xbal1bYVtpXVtqXV09MTsKICAgICAgICAgICAgY2VsbFtnZXRjZWxsKGksIGopXVthW2ldW2pdXT0xOwogICAgICAgIH0KICAgIH0KICAgIGJ0cmFjaygxLCAxKTsKICAgIHJldHVybiAwOwp9Cg==