1 //2^n个运动员
2 #include<stdio.h>
3 int a[100][100];
4 int n;
5
6 void fun(int n)
7 {
8 int u,v,j,i;
9 if(n==0) a[n][n]=1;
10 else
11 {
12 fun(n-1);
13 u=1<<(n-1);
14 v=1<<n;
15 for(i=0;i<u;i++)
16 for(j=u;j<v;j++)
17 a[i][j]=a[i][j-u]+u;
18 for(i=u;i<v;i++)
19 for(j=0;j<u;j++)
20 a[i][j]=a[i-u][j+u];
21 for(i=u;i<v;i++)
22 for(j=u;j<v;j++)
23 a[i][j]=a[i-u][j-u];
24 }
25 }
26
27 int main( )
28 {
29 int i,j;
30 while(scanf("%d",&n),n)
31 {
32 fun(n);
33 for(i=0;i<(1<<n);i++)
34 {
35 for(j=0;j<(1<<n);j++)
36 printf("%d ",a[i][j]);
37 printf("\n");
38 }
39 }
40 return 0;
41 }
42
43