/*#include <stdio.h>
#include <math.h>
int main()
{
int n, tot=0;
for(int j=1; j<=5; j++)
{
scanf("%d", &n);
//n의 약수의 합 구하기
tot = 0;
for(int i=1; i<=(int)sqrt(n); i++)
{
if(n%i == 0)
{
tot = tot + i;
tot = tot + n/i;
if(n/i==i)
{
tot -= i;
}
}
}
//n의 약수의 합-n이 n인지?
if(tot -n == n)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
//1 2 4 7 14 28
#include<stdio.h>
int main()
{
int a,b,max,result=0;
scanf("%d %d",&a,&b);
int i,j;
if(a>b)
{
max = a;
}
else
{
max = b;
}
for(i=1;i<=max;i++)
{
if(a % i == 0 && b%i==0)
{
result=i;
}
}
printf("%d",result);
}
#include <stdio.h>
int gcd(int a,int b)
{
if (a % b == 0)
{
return b;
}
else
{
return gcd(b, a % b);
}
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d %d", gcd(a, b), a * b / gcd(a, b));
return 0;
}*/
//두 개의 자연수 쌍이 여러 개 있는 경우에는
//두 자연수의 합이 최소가 되는 두 수를 출력한다.
#include<stdio.h>
int main()
{
int n, m;
scanf("%d %d", &n, &m);
int mult = m/n;
int a, b;
int mina,minb; //최댓값과 최솟값은 초깃값을 설정 해야한다!!!!!
mina=1; minb=m/n;
for (int i = 1; i*i < mult; i++)
{
if (mult%i == 0)
{
b = i;
a = mult /i;
if(a+b<mina+minb)
{
mina=a;
minb=b;
}
}
}
printf("%d %d", b*n,a*n);
return 0;
}