1 #include <cstdio>
2 #include <cstdlib>
3 #include <cmath>
4 #include <cstring>
5 #include <time.h>
6 #include <string>
7 #include <set>
8 #include <map>
9 #include <list>
10 #include <stack>
11 #include <queue>
12 #include <vector>
13 #include <bitset>
14 #include <ext/rope>
15 #include <algorithm>
16 #include <iostream>
17 using namespace std;
18 #define ll long long
19 #define minv 1e-6
20 #define inf 1e9
21 #define pi 3.1415926536
22 #define E 2.7182818284
23 const ll mod=1e9+7;//998244353
24 const int maxn=2e5+10;
25
26 int zhi[maxn];
27 bool vis[maxn]={0};
28 vector<int> st;
29 int tot,s[100],t[100],g=0;
30 vector<int>* vec;
31
32 void build(int index,int value)
33 {
34 if (index==tot)
35 vec->push_back(value);
36 else
37 build(index+1,value);
38
39 int i;
40 for (i=1;i<=t[index];i++)
41 {
42 value*=s[index];
43 if (index==tot)
44 vec->push_back(value);
45 else
46 build(index+1,value);
47 }
48 }
49
50 void work(vector<int>* _vec,int v)
51 {
52 int i;
53 tot=0;
54 for (i=1;i<=g;i++)
55 if (v%zhi[i]==0)
56 {
57 tot++;
58 s[tot]=zhi[i];
59 t[tot]=0;
60 while (v%zhi[i]==0)
61 {
62 v/=zhi[i];
63 t[tot]++;
64 }
65 if (v==1)
66 break;
67 }
68 if (v!=1)
69 {
70 tot++;
71 s[tot]=v;
72 t[tot]=1;
73 }
74
75 vec=_vec;
76 vec->clear();
77
78 if (tot==0) //v=1
79 vec->push_back(1);
80 else
81 build(1,1);
82
83 sort(vec->begin(),vec->end());
84
85 for (vector<int>::iterator j=st.begin();j!=st.end();j++)
86 printf("%d ",*j);
87 printf("\n\n");
88 }
89
90 void getzhi()
91 {
92 int i,j,k;
93 int v=sqrt(3e10);
94 for (i=2;i<=v;i++)
95 {
96 if (!vis[i])
97 {
98 g++;
99 zhi[g]=i;
100 }
101 for (j=1;j<=g;j++)
102 {
103 k=i*zhi[j];
104 if (k>v)
105 break;
106 vis[k]=1;
107 if (i%zhi[j]==0)
108 break;
109 }
110 }
111 }
112
113
114 int main()
115 {
116 int v;
117 getzhi();
118 while (~scanf("%d",&v))
119 {
120 work(&st,v);
121 }
122 return 0;
123 }