import java.util.Scanner;

import java.util.ArrayList;

import java.util.Arrays;

// 注意类名必须为 Main, 不要有任何 package xxx 信息

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        // 注意 hasNext 和 hasNextLine 的区别

        while (in.hasNextInt()) { // 注意 while 处理多个 case

            int a = in.nextInt();

            ArrayList sortList = getSortRes(a);

            for(int i=0;i<sortList.size();i++){

                if(i!=sortList.size()-1){

                    System.out.print(sortList.get(i)+" ");

                }else{

                    System.out.print(sortList.get(i));

                }

            }

        }

    }

    private static ArrayList getSortRes(int num){

        ArrayList<Integeral = new ArrayList<Integer>();

//主要是缩小范围,i< num的开方,否则,当num很大时, 时间花费超过预期

        for(int i=2;i*i<num+1;){

            if(isNum(i) && num%i==0){

                num = num/i;

                al.add(i);

            }else{

                i++;

            } 

        }

        al.add(num);

        return al;

    }

    private static boolean isNum(int n){

        boolean flag = true;

        for(int i=2;i<n/2;i++){

            if(n%i==0 && i!=n){

                flag = false;

            }

        }

        return flag;

    }

}