program dalikliai;
  { 3 u‘davinys, pirmas sprendimas }
{----------------------------------------------------------}
  function daugiausia (m, n : integer) : integer;
    { randamas ma‘iausias intervalo [m, n] skai‡ius, }
    { turintis daugiausia dalikli—; m, n - nat–ralieji }
    var d, daug, sk, i : integer;
    function dalik (k : integer) : integer;
      { kiek dalikli— turi skai‡ius k }
      var d, dal : integer;
    begin
      dal := 0;
      d := 1;
      while d * d < k do
        begin
          if k mod d = 0
             then dal := dal + 2;
                  { yra du dalikliai: d ir k div d }
          d := d + 1
        end;
      if d * d = k
         then dal := dal + 1;
      dalik := dal
    end;
  begin { daugiausia }
    daug := dalik (m);
    sk := m;
    for i := m + 1 to n do
        begin
          d := dalik (i);
          if d > daug
             then begin
                    daug := d;
                    sk := i
                  end;
        end;
    daugiausia := sk
  end;
{----------------------------------------------------------}
  var m, n : integer;
begin
  write ('­veskite skai‡ius m ir n : ');
  readln (m, n);
  writeln (daugiausia (m, n))
end.
