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)))