Помогите пожалуйста, я не совсем понимаю что и как надо сделать в этой задаче! Объясните пожалуйста как решить эту задачу.

const(от N лень было избавляться, просто организуй ввод так, чтобы при вводе определенного значения он прекращался)
n = 15;
function find_ascend(var max: integer): integer;
var curr, start: integer;
prevArr, nextArr: integer;
function check_max(i: integer): integer;
begin
if max < curr then
begin
max := curr;
check_max := i - curr + byte(i = pred(n))
end
else check_max := start
end;
var
i: integer;
begin
write('--> '); readln(prevArr);
max := 0; curr := 1;
start := 1;
for i := 1 to pred(n) do
begin
write('--> '); readln(nextArr);
if prevArr < nextArr then
inc(curr)
else
begin
start := check_max(i);
curr := 1
end;
prevArr := nextArr;
end;
start := check_max(i);
find_ascend := start
end;
var _start, _max: integer;
begin
_start := find_ascend(_max);
writeln('start = ', _start, ' len = ', _max)
end.
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
i:=0;
Listbox2.Items.Clear;
Repeat
if StrToInt(Listbox1.Items[i])>StrToInt(Listbox1.Items[i+1]) then
begin
Listbox2.Items.Add(IntToStr(i));
While StrToInt(Listbox1.Items[i])>StrToInt(Listbox1.Items[i+1]) do inc(i)
end;
inc(i);
Until i=Listbox1.Items.Count-1;
end;
end.