def euler_sieve(x):
isprime = [True]*(x+2)
primes = []
for i in range(2,x+1):
if isprime[i]:
primes.append(i)
for j in primes:
if j*i > x:
break
isprime[j*i] = False
if i%j == 0:
break
return primes
n = int(input())
l = []
primes = euler_sieve(int(n**0.5)+3)
index = 0
maxindex = len(primes)-1
while n != 1 and index != maxindex:
if n%primes[index] == 0:
n //= primes[index]
l.append(primes[index])
else:
index += 1
if n != 1:
l.append(n)
print(" ".join(map(str,l)))

京公网安备 11010502036488号