#include<iostream>
using namespace std;
void search(int m);
void testout();
void output();
int a[3][3];
int used[10] = {0};
int main()
{
search(0);
return 0;
}
void search(int m)
{
int i;
if(m == 9)
{
testout();
}
else
{
for(i = 1 ; i <= 9 ; i++)
{
if(used[i] == 0)
{
used[i] = 1;
a[m/3][m%3] = i;
search(m+1);
used[i] = 0;
}
}
}
}
void testout()
{
int i,j,flag;
flag = 1;
for(i = 0 ; i < 3 ; i++)
{
if(a[i][0]+a[i][1]+a[i][2]!=15||a[0][i]+a[1][i]+a[2][i]!=15)
{
flag = 0;
break;
}
}
if(flag == 1&&(a[0][0]+a[1][1]+a[2][2]!=15||a[0][2]+a[1][1]+a[2][0]!=15))
{
flag = 0;
}
if(flag == 1)
{
output();
}
}
void output()//每个数字后带一个空格,每个幻方后带一个空行。
{
int i,j;
for(i = 0;i < 3; i++)
{
for(j = 0;j < 2; j++)
{
cout << a[i][j] << " ";
}
cout <<a[i][2]<<endl;
}
cout << endl;
}