program progname;
const
  rows = 5;
  cols = 5;
type
  TArr = array[1..rows, 1..cols] of Integer;
var
  arr: Tarr;
  i, j, l, tmp: Integer;
  isNeg: Boolean;
  
procedure swap(var a, b: Integer);
var
  tmp: Integer;
begin
  tmp:=a;
  a:=b;
  b:=tmp;
end;
  
begin
  randomize; //Заполнение рандомно матрицы и ее вывод
  writeln('Исходная матрица:');
  for i:=1 to rows do
  begin
    for j:=1 to cols do
    begin
      arr[i, j]:=random(30) - 10;
      write(arr[i, j]:4);
    end;
  writeln;
  end;
  writeln('Пункт 1:');  //Пункт 1
  for i:=1 to rows do
  begin
    isNeg:=false;
    for j:=1 to cols do
      if arr[i, j] < 0 then
        isNeg:=true;
    if isNeg then
    begin
      writeln('Строка с отрицательным элементом! Индекс ', i);
      break;
    end;
  end;
  writeln('Пункт 2');  //Пункт 2
  for i:=1 to rows - 1 do
    for j:=i + 1 to cols do
      if arr[i, j] < 0 then
        arr[i, j] := abs(arr[i, j]);
  for i:=1 to rows do
  begin
    for j:=1 to cols do
      write(arr[i, j]:4);
    writeln;
  end;
  writeln('Пункт 3');  //Пункт 3
  for i:=2 to cols do
  begin
    tmp:=arr[rows, i];
    j:=i - 1;
    while (j > 0) and (tmp < arr[rows, j]) do
    begin
      arr[rows, j + 1]:=arr[rows, j];
      for l:=1 to rows - 1 do
          swap(arr[l, j + 1], arr[l, j]);
      dec(j);
    end;
    arr[rows, j + 1]:=tmp;
  end;
  for i:=1 to rows do
  begin
    for j:=1 to cols do
      write(arr[i, j]:4);
    writeln;
  end;
end.