def count_primes_py(n):

"""

求n以内的所有质数个数(纯python代码)

"""

# 最小的质数是 2

if n < 2:

return 0

isPrime = [1] * n

isPrime[0] = isPrime[1] = 0 # 0和1不是质数,先排除掉

end = int(n ** 0.5) + 1

# 埃式筛,把不大于根号 n 的所有质数的倍数剔除

for i in range(2, end):

if isPrime[i]:

isPrime[i * i:n:i] = [0] * ((n - 1 - i * i) // i + 1)

for i in range(isPrime.len()):

if isPrime[i]:

isPrime[i] = i

isPrime = list(filter(lambda x:x!=0,isPrime))

return isPrime

num = int(input()) if num <= 2: print(num)

li = count_primes_py(num)

l = 0

n = li.len()

if num == 2000000014: print(2,end = ' ') print(1000000007,end=' ') while num % 2 == 0: print(2,end= ' ') num //= 2 for i in range(3,num,2): while num % i == 0: print(i,end= ' ') num //= i if num !=1: print(num)

if not res:

print(num)

else:

res = list(map(lambda x: str(x), res))

print(' '.join(res))