program SortingLaba5;

type
  index=byte;
  item=word;
const
  n=8;
var
  i,j,m,l,r,k     :index;
  x,max,max1      :item;
  a               :array[1..n,1..n] of item;


begin
  { TODO -oUser -cConsole Main : Insert code here }

randomize;
for i:=1 to n do
  begin
  for j:=1 to n do
    begin
    a[i,j]:=random(1000);
    write(a[i,j]:5)
    end;
  writeln
  end;

{----------------------------------------------}

for i:=2 to n do
  begin
  max:=a[i,1];
  for j:=2 to n do
    if a[i,j]>max then
      max:=a[i,j];
  l:=1;
  r:=i;
  while l<r do
    begin
    m:=(l+r) div 2;
    max1:=a[m,1];
    for j:=2 to n do
      if a[m,j]>max1 then
        max1:=a[m,j];
    if max1<=max then
      l:=m+1
    else
      r:=m
    end;

  for k:=1 to n do
    begin
    x:=a[i,k];
    for j:=i downto r+1 do
      a[j,k]:=a[j-1,k];
    a[r,k]:=x
    end
  end;

{----------------------------------------------}
  writeln;
  writeln;

for i:=1 to n do
  begin
  for j:=1 to n do
    write(a[i,j]:5);
  writeln
  end;
  readln;

end.
