import math
n = int(input())
for i in range(2, int(math.sqrt(n))+1):
	# 一个数可以被它所有的质因子表示
    # 这里仅考虑不大于根号下n的因子
    # 因为当n被所有不大于根号下n的【质】因子整除后,要么余1,要么余2,要么会剩下一个且仅会剩下一个大于等于根号下n小于等于n的质数(不可能出现两个不相等且同时大于根号下n的质因子a和b,这会导致a*b>n)
# for i in range(2, n):
    # 2<=i<n
    while n % i == 0:
        # 第一个能被整除的一定是最小的质数因子(如果是合数,一定有2<=x<i的质因子x)
        # 后续能被整除的也一定是质数,若是合数,则合数的质因子肯定出现在之前,不成立
        print(i, end=' ')  # 得到的每个i都是n的质因子(即列举重复的质因子)
        n = n // i  # n不断变小,确保没有i这个质因子
        # 双除号:输出整数
if n > 2:
    print(n)