#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define search(key, a, n) bsearch(key, a, n, sizeof(int), compare);
#define sort(a, n) qsort(a, n, sizeof(int), compare);
#define FOR(i, a, n) for(i = a; i < n; i++)
#define loop(i, n) FOR(i, 0, n)
typedef long long ll;
void swap(int *a, int *b)
{
int *temp;
*temp = *a;
*a = *b;
*b = *temp;
}
int min(int a, int b)
{
if(a > b)
return b;
return a;
}
int max(int a, int b)
{
if(a > b)
return a;
return b;
}
int gcd(int a, int b)
{
return(b == 0 ? a : gcd(b, a%b));
}
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int findNextCoin(int n, int * primes)
{
int i = 0, j;
//printf("%d %d", n, primes[i]);
while(n % primes[i] != 0 && n > primes[i])
{
//printf("%d\n", primes[i]);
i ++;
}
printf("%d ", n / primes[i]);
return n / primes[i];
}
int main()
{
int n, i, a[1000001], primes[100000], j = 0, k;
scanf(" %d", &n);
for(i = 2; i <= 1000000; i ++)
{
if(a[i] == 0)
{
primes[j] = i;
j ++;
for(k = 2 * i; k <= 1000000; k += i)
a[k] = 1;
}
}
/*loop(i, 10)
printf("%d\n", primes[i]);*/
printf("%d ", n);
while(n > 1)
{
n = findNextCoin(n, primes);
}
return 0;
}