uses crt;

{konstanta pro velikost sachovnice}
const velsach=10;
{nadefinovani dvourozmerneho pole}
type TSachovnice=array[1..velsach,1..velsach] of integer;
var z: char;
    sachovnice:TSachovnice;

{napln cele pole hodnotama -1}
procedure InitSachovnice(var s:TSachovnice);
var i,j:integer;
begin
     for i:=1 to velsach do
         begin
              for j:=1 to velsach do
                  s[i,j]:=-1;
         end;
end;

{Vypis sachovnici na obrazovku}
procedure VypisSachovnici(s:TSachovnice);
var i,j:integer;
begin
     for i:=1 to velsach do
         begin
              for j:=1 to velsach do
                  write(s[i,j]:3);
              writeln;
         end;
end;

{vypocet skoku kone}
procedure TahKonem(var s:TSachovnice; pozX,pozY:integer; cislotahu:integer);
begin
     {podminky ukonceni programu}
     if (pozX>0) and (pozX<=VelSach) and
        (pozY>0) and (pozY<=VelSach) then
                 begin
                      if (s[pozX,pozY]=-1) OR (s[pozX,pozY]>cislotahu) then
                         begin
                              {rekurze}
                              s[pozX,pozY]:=cislotahu;
                              TahKonem(s, pozX+2, pozY+1, cisloTahu+1);
                              TahKonem(s, pozX+2, pozY-1, cisloTahu+1);
                              TahKonem(s, pozX-2, pozY+1, cisloTahu+1);
                              TahKonem(s, pozX-2, pozY-1, cisloTahu+1);
                              TahKonem(s, pozX+1, pozY+2, cisloTahu+1);
                              TahKonem(s, pozX+1, pozY-2, cisloTahu+1);
                              TahKonem(s, pozX-1, pozY-2, cisloTahu+1);
                              TahKonem(s, pozX-1, pozY+2, cisloTahu+1);
                         end;
                 end;
end;

begin
repeat
clrscr;
writeln('Trtkal 2008 - http://fei.trtkal.net');
writeln('-----------------------------------');
begin
     InitSachovnice(sachovnice);
     TahKonem(sachovnice, 1, 1, 0);
     VypisSachovnici(sachovnice);
end;
writeln('-----------------------------------');
write('Opakovat a/n: ');readln(z);
until (z='n');
end.