program kun; const n=8; var a: array [1..n,1..n] of integer; procedure Init; var i,j: integer; begin for i:=1 to n do for j:=1 to n do a[i,j]:= -1; end; procedure Hraj (i,j:integer; k:integer); begin if (i>=1) and (i<=n) and (j>=1)and (j<=n) then begin if (a[i,j] = -1) or (a[i,j] > k) then begin a[i,j]:=k; Hraj(i+2,j+1,k+1); Hraj(i+2,j-1,k+1); Hraj(i-2,j+1,k+1); Hraj(i-2,j-1,k+1); Hraj(i+1,j+2,k+1); Hraj(i+1,j-2,k+1); Hraj(i-1,j+2,k+1); Hraj(i-1,j-2,k+1); end; end; end; procedure Vypis; var i,j: integer; begin for i:=1 to n do begin for j:=1 to n do if a[i,j] = -2 then write ('!':3) else if a[i,j] = -1 then write ('x':3) else write (a[i,j]:3); writeln; end; end; procedure Prekazky; var i,j: integer; begin for i:= 3 to 5 do for j:=2 to 4 do a[i,j] := -2; end; begin Init; Prekazky; Hraj(1,1,0); Vypis; readln; end.