# def function_name(매개변수):
# 수행할_문장
# return 리턴값
# n=list(map(int,input().split()))
#
# def findOdd(data):
#
# odd=[]
# for i in range(len(data)):
# if data[i]%2!=0:
# odd.append(data[i])
#
# odd_sum=0
# for i in range(len(odd)):
# odd_sum+=odd[i]
# if odd_sum == 0:
# return -1
#
# return odd_sum
#
# print(findOdd(n))
# n = list(map(int, input().split()))
#
# def median(n):
#
# n.sort()
# return n[2]
#
# print(median(n))
# n=int(input())
# m=int(input())
#
# def A():
# global n
# global m
#
# a= (n+m)//2
# b= (n-a)
# if a<b:
# a=b
# b=a
#
# return a, b
#
# x, y = A()
# print(x, y,sep='\n')
# N=list(map(int,input()))
# def Function():
# global N
# data=[]
# N.reverse()
# for i in range(len(N)):
# if N[i]!=0:
# data.append(N[i])
# print(N[i],end='')
#
# sum=0
# for i in range(len(data)):
# sum+=data[i]
# print('\n',sum)
#
# Function()
# pay = int(input())
#
# def rmsfhthemrrhdwpdor():
#
# global pay
#
# if pay <= 500:
# k = pay * 0.7
# k = int(k // 1)
# return k
#
# elif 500 <pay <= 1500:
# a = (pay - 500) * (0.4)
# k = 350 + a
# k = int(k // 1)
# return k
#
#
# elif 1500 < pay <= 4500:
# a = (pay - 1500) * (0.15)
# k = 750 + a
# k = int(k // 1)
# return k
#
#
# elif 4500 < pay <= 10000:
# a = (pay - 4500) * (0.05)
# k = 1200 + a
# k = int(k // 1)
# return k
#
# else:
# a = (pay-10000) * (0.02)
# k = 1475 + a
# k = int(k // 1)
# return k
#
# k=rmsfhthemrrhdwpdor()
# print(rmsfhthemrrhdwpdor())
# def height():
# tall = []
# for i in range(7):
# n=int(input())
# tall.append(n)
# tall.sort()
#
# return tall[6],tall[5]
#
# x , y = height()
# print(x,y,sep='\n')
def dmdkr():
a, b = map(int, input().split())
if a < b:
a = b
b = a
chleorhddirtn = 0
for i in range(1, b + 1):
if (a % i == 0) and (b % i == 0):
chleorhddirtn = i
a = a // chleorhddirtn
b = b // chleorhddirtn
chlthrhdqotn = a b chleorhddirtn
return chleorhddirtn,chlthrhdqotn
x, y = dmdkr()
print(x, y, sep='\n')



