varm:array[0..1000] of longint;n,i:longint;procedure tf; var q,j:longint; o:array[1..10] of longint; begin write(m[1],' '); q:=1; o[q]:=m[1]; i:=1; while q<>3 do begin i:=i+1; if q=1 then if m[i]<>o[1] then begin write(m[i],' '); q:=q+1; o[q]:=m[i]; end; if q=2 then if (m[i]<>o[1]) and (m[i]<>o[2]) then begin write(m[i]); q:=q+1; end; end;end;procedure tm;varmk:array[1..10] of longint; begin for i:=1 to 3 do mk[i]:=0;for i:=1 to n do if mk[1]<m[i] then begin mk[3]:=mk[2]; mk[2]:=mk[1]; mk[1]:=m[i]; end else if (mk[2]<m[i]) and (m[i]<>mk[1]) then begin mk[3]:=mk[2]; mk[2]:=m[i]; end else if (mk[3]<m[i]) and (mk[2]<>m[i]) then mk[3]:=m[i];write(mk[1],' ',mk[2],' ',mk[3]); end;Скорее всего это можно было написать чище и оптимальнее, но вот моё решение на скорую руку