program Longest; var n, {количество членов последовательности} p, {номер ее текущего члена} Place, {номер модифицируемой строки } MaxLine : integer;{номер последней строки} {исходная последовательность} NumberString : array[1..50] of integer; {модифицируемоя таблица} Tab : array[1..50,1..50] of integer; f1,f2:text; procedure InData; var i : integer; begin readln(f1,n); for i:=1 to n do begin read(f1,NumberString[i]); end; end; procedure OutResult; var i : 1..100; begin for i:=1 to MaxLine-1 do write(f2, Tab[MaxLine,i],' '); writeln(f2, Tab[MaxLine,maxline]); end; procedure DownString (Place : integer); var i: integer; begin if Place>1 then for i:=1 to (Place-1) do Tab[Place,i] := Tab[Place-1,i]; end; function SearchGreater (x : Integer; var k : integer) : boolean; var Founded: boolean; begin k:=0; Founded:=false; while(k