const max=10;
type square=array [-1..max+1,-1..max+1] of longint;
vector=array [1..max*max] of longint;
var n:longint;
x:array [1..8] of longint=(-2,-2,-1,-1,+1,+1,+2,+2);
y:array [1..8] of longint=(-1,+1,-2,+2,-2,+2,-1,+1);
c,r:square;
a,b:vector;
checking:boolean;
procedure input;
begin
readln(n);
end;
procedure backTrack(i,u,v:longint);
var j:longint;
begin
if (i>n*n) then
begin
checking:=true;
exit;
end;
for j:=1 to 8 do
begin
if checking then exit;
inc(u,x[j]);
inc(v,y[j]);
if (u>0) and (u<=n) and (v>0) and (v<=n) and (i<=n*n) and (c[u,v]=0) then
begin
c[u,v]:=1;
r[u,v]:=i;
backTrack(i+1,u,v);
c[u,v]:=0;
end;
dec(u,x[j]);
dec(v,y[j]);
end;
end;
procedure solve;
begin
fillchar(c,sizeof(c),0);
c[1,1]:=1;
r[1,1]:=1;
checking:=false;
backTrack(2,1,1);
end;
procedure output;
var j,i:longint;
begin
for j:=1 to n do
begin
for i:=1 to n do write(r[i,j],' ');
writeln;
end;
readln;
end;
begin
input;
solve;
output;
end.
Y29uc3QgbWF4PTEwOwp0eXBlIHNxdWFyZT1hcnJheSBbLTEuLm1heCsxLC0xLi5tYXgrMV0gb2YgbG9uZ2ludDsKdmVjdG9yPWFycmF5IFsxLi5tYXgqbWF4XSBvZiBsb25naW50Owp2YXIgbjpsb25naW50Owp4OmFycmF5IFsxLi44XSBvZiBsb25naW50PSgtMiwtMiwtMSwtMSwrMSwrMSwrMiwrMik7Cnk6YXJyYXkgWzEuLjhdIG9mIGxvbmdpbnQ9KC0xLCsxLC0yLCsyLC0yLCsyLC0xLCsxKTsKYyxyOnNxdWFyZTsKYSxiOnZlY3RvcjsKY2hlY2tpbmc6Ym9vbGVhbjsKIHByb2NlZHVyZSBpbnB1dDsKICBiZWdpbgogIHJlYWRsbihuKTsKICBlbmQ7CiBwcm9jZWR1cmUgYmFja1RyYWNrKGksdSx2OmxvbmdpbnQpOwogIHZhciBqOmxvbmdpbnQ7CiAgYmVnaW4KICBpZiAoaT5uKm4pIHRoZW4KICAgYmVnaW4KICAgY2hlY2tpbmc6PXRydWU7CiAgIGV4aXQ7CiAgIGVuZDsKICBmb3Igajo9MSB0byA4IGRvCiAgICBiZWdpbgogICAgaWYgY2hlY2tpbmcgdGhlbiBleGl0OwogICAgaW5jKHUseFtqXSk7CiAgICBpbmModix5W2pdKTsKICAgIGlmICh1PjApIGFuZCAodTw9bikgYW5kICh2PjApIGFuZCAodjw9bikgYW5kIChpPD1uKm4pIGFuZCAoY1t1LHZdPTApIHRoZW4KICAgICBiZWdpbgogICAgIGNbdSx2XTo9MTsKICAgICByW3Usdl06PWk7CiAgICAgYmFja1RyYWNrKGkrMSx1LHYpOwogICAgIGNbdSx2XTo9MDsKICAgICBlbmQ7CiAgICBkZWModSx4W2pdKTsKICAgIGRlYyh2LHlbal0pOwogICAgZW5kOwogIGVuZDsKIHByb2NlZHVyZSBzb2x2ZTsKICBiZWdpbgogIGZpbGxjaGFyKGMsc2l6ZW9mKGMpLDApOwogIGNbMSwxXTo9MTsKICByWzEsMV06PTE7CiAgY2hlY2tpbmc6PWZhbHNlOwogIGJhY2tUcmFjaygyLDEsMSk7CiAgZW5kOwogcHJvY2VkdXJlIG91dHB1dDsKICB2YXIgaixpOmxvbmdpbnQ7CiAgYmVnaW4KICBmb3Igajo9MSB0byBuIGRvCiAgIGJlZ2luCiAgIGZvciBpOj0xIHRvIG4gZG8gd3JpdGUocltpLGpdLCcgJyk7CiAgIHdyaXRlbG47CiAgIGVuZDsKICByZWFkbG47CiAgZW5kOwpiZWdpbgppbnB1dDsKc29sdmU7Cm91dHB1dDsKZW5kLgo=