uses crt;
var a,b:word;
function ucln(x,y:longint):longint;
begin
while x<>y do
if x>y then x:=x-y
else y:=y-x;
exit(x);
end;
begin
clrscr;
repeat
readln(a,b);
until (1<=a) and (1<=b) and (a<=10000) and (b<=10000);
writeln(ucln(a+b,a*b));
writeln(a*b mod (a+b));
readln;
end.