27 lines
751 B
ObjectPascal

var
a : array[1..256,1..256] of longint;
n,m,i,j : longint;
procedure make(i,j,l,r:longint);
begin
if l = r then a[i,j]:=l else
begin
make(i,j,l,(l+r) shr 1);
make(i+(r-l) shr 1+1,j+(r-l) shr 1+1, l , (l+r) shr 1);
make(i+(r-l) shr 1+1,j, (l+r) shr 1 + 1 , r);
make(i,j+(r-l) shr 1+1, (l+r) shr 1 + 1 , r)
end;
end;
begin
assign(input,'match.in');
reset(input);
assign(output,'match.out');
rewrite(output);
readln(m);
n:=1 shl m;
make(1,1,1,n);
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j],' ');writeln
end;
close(output)
end.