program lab05task1(input, output);
const
  n = 7; { рядки }
  m = 8; { стовпці }
var
  Y: array[1..n, 1..m] of integer;
  Z: array[1..m] of integer;
  i, j, max_val: integer;

begin
  randomize;
  
  { Заповнення матриці }
  for i := 1 to n do
    for j := 1 to m do
      Y[i, j] := random(100) - 50;

  { Виведення матриці, як у консолі Lazarus }
  writeln('Matrix ', n, '*', m, ' Y=');
  for i := 1 to n do
  begin
    for j := 1 to m do
      write(Y[i, j]:4, '|');
    writeln;
  end;

  { Пошук максимумів у стовпцях }
  for j := 1 to m do
  begin
    max_val := Y[1, j];
    for i := 2 to n do
    begin
      if Y[i, j] > max_val then
        max_val := Y[i, j];
    end;
    Z[j] := max_val;
    
    { Вивід проміжних значень для кожного стовпця, як на скріні }
    writeln('column ', j, ': max= ', Z[j]:3);
  end;

  { Виведення фінального масиву Z }
  writeln('Result array Z-');
  for j := 1 to m do
    write(Z[j]:4);
  writeln;

  readln;
end.
