#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
bool isPrime(long num)
{
if(num == 2 || num == 3)
return 1 ;
if(num % 6 != 1 && num % 6 != 5)
return 0 ;
long tmp = long(sqrt(num));
for(long i = 5;i <= tmp; i += 6)
if(num % i == 0 || num % (i + 2) == 0)
return 0 ;
return 1 ;
}
long min_yinshu(long shu){
for(long i = 2; i <= shu; i++)
if(shu % i == 0 && isPrime(i))
return i;
return -1;
}
int main() {
long number;
cin >> number;
vector<long> yinshis;
long yinshu;
while(1){
yinshu = min_yinshu(number);
if(yinshu == number){
yinshis.push_back(yinshu);
break;
}
else {
yinshis.push_back(yinshu);
number /= yinshu;
}
}
for(int i = 0; i < int(yinshis.size()); i++)
cout << yinshis[i] << " ";
return 0;
}