Ну, в общем, примерно так....
program maximus;
const
max_count = 3;
var
a : array of array of byte;
i, j, k, l, m, n, t : byte;
max : array[1..max_count] of byte;
ch : char;
begin
write('Введите количество строк: ');
readln(n);
write('Введите количество столбцов: ');
readln(m);
setLength(a, n);
for i:=0 to n-1 do setLength(a[i], m);
write('Заполнить матрицу случайными числами (y/n): ');
readln(ch);
if ((ch='y') or (ch='Y')) then begin
randomize;
for i:=0 to n-1 do begin
for j:=0 to m-1 do begin
a[i][j] := random(251);
write(a[i][j]: 4, ' ');
end;
writeln;
end;
end
else begin
for i:=0 to n-1 do begin
writeln('Заполните строку ', i+1);
for j:=0 to m-1 do
readln(a[i][j]);
end;
for i:=0 to n-1 do begin
for j:=0 to m-1 do
write(a[i][j]:4, ' ');
writeln;
end;
end;
t :=255;
for k:=1 to max_count do begin
if k>1 then t:=max[k-1];
l := a[0][0];
for i:=0 to n-1 do
for j:=0 to m-1 do
if ((a[i][j] > l) and (a[i][j] < t)) then l:=a[i][j];
max[k] := l;
end;
writeln;
write(max_count, ' максимальных элемента: ');
for i:=1 to max_count do write(max[i], ' ');
writeln;
end.