1 #include <cstdio> 2 int a[10],copy[10],cnt,ans,flag; 3 bool check(){ 4 int sum=a[1]+a[2]+a[3]; 5 if(sum!=a[4]+a[5]+a[6])return false; 6 if(sum!=a[1]+a[4]+a[7])return false; 7 if(sum!=a[3]+a[5]+a[7])return false; 8 if(sum!=a[2]+a[5]+a[8])return false; 9 if(sum!=a[3]+a[6]+a[9])return false; 10 if(sum!=a[7]+a[8]+a[9])return false; 11 if(sum!=a[1]+a[5]+a[9])return false; 12 return true; 13 } 14 int vis[10],p[10]; 15 void dfs(int n){ 16 if(ans>1)return; 17 if(n==cnt){ 18 if(check()){ 19 flag=1,ans++; 20 for(int i=1;i<=9;i++)copy[i]=a[i]; 21 } 22 return; 23 } 24 for(int i=1;i<=9;i++){ 25 if(!vis[i]){ 26 a[p[n+1]]=i,vis[i]=1; 27 dfs(n+1); 28 a[p[n+1]]=0,vis[i]=0; 29 } 30 } 31 } 32 int main(){ 33 for(int i=1;i<=9;i++){ 34 scanf("%d",&a[i]); 35 if(a[i])vis[a[i]]=1; 36 else p[++cnt]=i; 37 } 38 dfs(0); 39 if(ans>1)puts("Too Many"); 40 else 41 for(int i=1;i<=9;i++){ 42 printf("%d ",copy[i]); 43 if(i%3==0)puts(""); 44 } 45 return 0; 46 }