Пожалуйста, объясните действия, происходящие в программе!
Заранее спасибо!


program MaxPal;
var
s,p:string;
i,k,n:integer;

function IsPal(s:string):boolean;
var i,n:integer;
begin
IsPal:=true;
n:=length(s);
for i:=1 to n div 2 do
if (s[i]<>s[n-i+1]) then
begin
IsPal := false;
break;
end;
end;

begin
readln(s);
n:=length(s);
k:=n;
p:=' ';
while (k>0) and (p=' ') do
begin
for i:=1 to n-k+1 do
begin
if IsPal(copy(s,i,k)) then
begin
p:= copy(s,i,k);
break;
end;
end;
k:=k-1;
end;
writeln(p);
end.