#include<stdio.h>
#include<iostream>
int main()
{
int A,V,W,v,w,c=0;
int n[243],n1[82],n2[82],n3[82];
int b[83];
b[0]=b[82]=0;
int a[83]={0,
5,0,2,0,0,0,0,0,0,
0,0,0,0,6,0,9,0,0,
0,0,0,0,0,0,0,0,0,
0,4,1,0,0,7,0,0,0,
0,0,0,5,0,0,0,6,0,
0,0,5,0,0,2,0,0,0,
0,9,7,0,8,5,0,0,0,
0,0,0,0,0,0,0,3,5,
0,5,4,0,0,0,0,9,6};
for(v=0;v<3;v++)
for(w=0;w<3;w++)
for(V=0;V<3;V++)
for(W=0;W<3;W++){
n[c++]=n[c+81]=n[c+162]=0;
n1[c]=27*v+9*w-1;
n2[c]=27*V+9*W+80;
n3[c]=27*v+9*V+161;
}
for(c=1;c<82;c++){
A=a[c];
b[c]=0;
if(A)
n[n1[c]+A]=n[n2[c]+A]=n[n3[c]+A]=++b[c];
}
c=1;
while(c){
while(b[c])
c++;
if(c<82){
A=a[c];
if(A)
n[n1[c]+A]=n[n2[c]+A]=--n[n3[c]+A];
for(++A;A<10;A++)
if(n[n1[c]+A]<1)
if(n[n2[c]+A]<1)
if(n[n3[c]+A]<1){
n[n1[c]+A]=n[n2[c]+A]=++n[n3[c]+A];
a[c++]=A;
break;
}
}
else {
for(A=0;A<81;A++){
printf(" %d",a[A+1]);
if(A%9>7)
printf("\n");
}
system("pause");
}
if(A>9){
a[c--]=0;
while(b[c])
c--;
}
}
return 0;
}