Today, Osama gave Fadi an integer X, and Fadi was wondering about the minimum possible value of max(a, b) such that LCM(a, b) equals X. Both a and b should be positive integers.

LCM(a, b) is the smallest positive integer that is divisible by both a and b. For example, LCM(6, 8) = 24, LCM(4, 12) = 12, LCM(2, 3) = 6.

Of course, Fadi immediately knew the answer. Can you be just like Fadi and find any such pair?

Input

The first and only line contains an integer X (1 ≤ X ≤ 10^{12}).

Output

Print two positive integers, a and b, such that the value of max(a, b) is minimum possible and LCM(a, b) equals X. If there are several possible such pairs, you can print any.

Examples

Input


2


Output


1 2


Input


6


Output


2 3


Input


4


Output


1 4


Input


1


Output


1 1
n = int(input())
 
 
from itertools import combinations as comb
def Factor(n):
    Ans = []
    d = 2
    while d * d <= n:
        if n % d == 0:
            Ans.append(d)
            n //= d
        else:
            d += 1
    if n > 1:
        Ans.append(n)
    return Ans
 
def gcd(a,b):
    while b != 0:
        a, b = b, a % b
    return a
 
p = Factor(n)
 
if n == 1:
    print(1,1)
    exit()
a, b = 1 * p[0], 1
 
 
t = 0
c = 0
if len(p) == 1:
    print(a,b)
    exit()
    
a,b = 1,1
var = []
tmp = 1
t = p[0]
for i in range(len(p)):
    if p[i] == t:
        tmp *= t
    else:
        var.append(tmp)
        tmp = p[i]
        t = p[i]
        
var.append(tmp)
 
if len(var) == 2:
    print(*var)
    exit()
if len(var) == 1:
    print(1,var[0])
    exit()
 
 
 
       
var = sorted(var)
 
 
k = []
for g in range(len(var)):
    for e in comb(var, g):
        tmp = list(e)
        c = 1
        for j in range(len(tmp)):
            c *= tmp[j]
        k.append(c)
 
a, b = 1, 1   
m = max(k) + 10
 
 
for i in range(len(k)):
    for j in range(len(k)):
        if k[i] * k[j] == n and max(k[i],k[j]) < m and i != j:
            a, b = k[i], k[j]
            m = max(k[i], k[j])
    
print(a,b)