var
a : array[1..5,1..5] of integer;
b : array[1..5,1..5] of boolean;
u,v : array[1..8] of integer;
i,j,num : integer;
procedure print;
var
k,kk:integer;
begin
num:=num+1;
if num<=5 then begin
for k:=1 to 5 do begin
for kk:=1 to 5 do
write(a[k,kk]:5);
writeln;
end;
writeln;
end;
end;
procedure try(i,j,n:integer);
var
k,x,y:integer;
begin
if n>25 then begin
print;
exit;
end ;
for k:=1 to 8 do begin
x:=i+u[k];
y:=j+v[k];
if (x<=5) and (x>=1) and (y<=5) and (y>=1) and b[x,y] then begin
b[x,y]:=false;
a[x,y]:=n;
try(x,y,n+1);
b[x,y]:=true;
a[x,y]:=0;
end;
end;
end;
begin
u[1]:=1; v[1]:=-2;
u[2]:=2; v[2]:=-1;
u[3]:=2; v[3]:=1;
u[4]:=1; v[4]:=2;
u[5]:=-1; v[5]:=2;
u[6]:=-2; v[6]:=1;
u[7]:=-2; v[7]:=-1;
u[8]:=-1; v[8]:=-2;
{for i:=1 to 5 do
for j:=1 to 5 do begin
a[i,j]:=0;
b[i,j]:=true;
end;}
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),true);
a[1,1]:=1;
b[1,1]:=false;
try(1,1,2);
writeln(num);
readln;
end.