program daliklis_ir_kartotinis;
  { 4 u‘davinys }
  var d, k, { pradiniai duomenys }
      x, y : integer;

  function dbd (x, y : integer) : integer;
    { randa skai‡i— x ir y did‘iausi…j bendr… dalikl }
  begin
    while (x <> 0) and (y <> 0) do
      if x >= y
         then x := x mod y
         else y := y mod x;
    dbd := x + y
  end;  { dbd }

begin
  write ('­veskite skai‡ius d ir k: ');
  readln (d, k);
  if (d > k) or (k mod d <> 0)     { atskiri atvejai }
     then writeln ('N‚ra sprendini—.')
     else if d = k
             then writeln (d, ' ', k)
             else begin
                    x := d;  { pradin‚ reikžm‚ }
                    while x * x < k * d do { y * x = k * d }
                      begin
                        if k * d mod x = 0
                           then { jei y sveikas }
                             begin
                               y := k * d div x;
                               if (dbd (x, y) = d) and
                                  (x * y div d = k)
                                  then writeln (x, ' ', y)
                             end;
                        x := x + d { x turi b–ti dalus iž d }
                      end
                  end
end.
