import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main{
    public static void main(String[] args){
        long number = 0L;
        String str = null;
        /* 使用 try-with-resources 方式开启控制台输入流,并捕捉处理异常
        * try() 中只有一个或最后一个流,可以不加分号作为语句结束
        */
        try(BufferedReader br = 
                new BufferedReader(new InputStreamReader(System.in))){
            /*循环读取输入流,获取行字符串
            **/
            while((str = br.readLine()) != null){
                // 把读取的字符串转换成 long 型整数
                number = Long.parseLong(str);
                //如果一个整数为合数,则其任何质数因子都小于或等于其平方根
                for(int i = 2; i <= Math.sqrt(number); i++){
                    //判断是否连续被同一个质数整除
                    while (number % i == 0) {
                        number /= i;
                        System.out.print(i + " ");
                    }
                }
                //经过前面的计算,如果 number 依然大于 1,则 number 本身就是质数
                if (number > 1) System.out.print(number + " ");
            }
        } catch ( IOException e ){
            e.printStackTrace();
        }
    }
}