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();
}
}
}