#include <iostream>
#include <vector>

using namespace std;

int main(){
    long num = 0; //
    cin >> num;
    vector<int> res;
    
    for(int i = 2; i * i <= num; ++i){ //2是最小的质因子 只需要验证一半便知2是不是质因子
        //cout<<num<<endl;
        while(num % i == 0){
            res.push_back(i);
            num /= i;         
        }        
    }
    //如果m=1,则while循环中刚好被质数分解完,如果大于1,说明没有被分解完,m就是那最后一个质数
    //同时,这句也可以应对输入为质数的特殊情况
    if(num >= 2) res.push_back(num); 
    
    for(int i = 0; i < res.size(); i++){
        cout << res[i] << " ";
    }
    cout << endl;
    
    return 0;
}