/*
#include <stdio.h>
#include <stdlib.h>
int main()
{
int h, t, i, max;
int a[100], h1[100];
scanf("%d %d", &h, &t);
for(i=0; i<t; i++)
{
scanf("%d %d", &a[i], &h1[i]);
}
for(i=0; i<t; i++)
{
if(a[i]==1)
{
h -= h1[i];
}
else if(a[i]==2)
{
h += h1[i];
}
else
{
h += h1[i];
max = h;
}
}
printf("%d\n", max);
}
*/
/*
#include <stdio.h>
int main()
{
int n, i, t=0, max=0;
int a[100], b[100], t1[100];
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &a[i]);
}
for(i=0; i<n; i++)
{
scanf("%d", &b[i]);
}
for(i=0; i<n; i++)
{
t1[i] = b[i];
}
while(1)
{
for(i=0; i<n; i++)
{
if(a[i]>=b[i])
{
t += 1;
}
}
if(t==n)
{
max++;
for(i=0; i<n; i++)
{
b[i] += t1[i];
}
}
else
{
break;
}
t=0;
}
printf("%d\n", max);
return 0;
}
*/
/*
#include<stdio.h>
#include<string.h>
int main()
{
int gn=0, i, len, no=0;
char e[300];
scanf("%s", &e);
len = strlen(e);
for(i=0; i<len; i++)
{
if('A'<=e[i]<='Z' || 'a'<=e[i]<='z' || e[i]=='-' || e[i]=='.')
{
printf("./%d/.", e[i]);
}
else if(e[i] == '@')
{
printf("@");
gn++;
}
else
{
no = 1;
}
}
printf("\n\n");
if(gn != 1)
{
no=1;
printf("%d !\n", gn);
}
if(no==0)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
}
*/
/*
#include<stdio.h>
int main()
{
int n, m, b, i, u=0;
int um[11]={};
int v[200], r[200];
scanf("%d %d %d", &n, &m, &b);
for(i=0; i<m; i++)
{
scanf("%d %d", &v[i], &r[i]);
}
for(i=0; i<m; i++)
{
if(r[i] == 1)
{
if(um[b-1]!=0)
{
um[b-1]--;
um[v[i]-1]++;
}
else
{
u++;
um[v[i]-1]++;
}
}
b = v[i];
}
printf("%d", u);
return 0;
}
*/
/*
#include<stdio.h>
int main()
{
int map[100][100];
int visit[100][100]={};
int m[4]={1};
int i, j, n, k, mo=1;
scanf("%d %d", &n, &k);
i=1;
j=1;
while(1)
{
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
printf("%d ", map[i][j]);
}
printf("\n");
}
}
*/
/*
#include<stdio.h>
int main() {
int map[102][102] = {0};
int i, j, n, l, k = 1, x, y, v=0, a, b;
int direct[4][2] = {{0, 1},{1, 0},{0, -1},{-1, 0} };
scanf("%d %d", &n, &l);
for(i=0; i<n+2; i++) {
for(j=0; j<n+2; j++) {
if(i==0 || j==0 || i==n+1 || j==n+1) {
map[i][j] = 9;
}
}
}
x=1;
y=1;
map[x][y] = k++;
for(i=0; i<n*n-1; i++) {
if(map[x+direct[v][0]][y+direct[v][1]]==0) {
x+=direct[v][0];
y+=direct[v][1];
map[x][y] = k++;
}
else {
v++;
v%=4;
i--;
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
if(map[i][j]==l)
{
a=j;
b=i;
}
}
}
printf("%d %d\n", a, b);
}
*/
/*
#include<stdio.h>
#include<string.h>
int main()
{
long long int r;
char map['Z'+1]={}, str[100], str1[100];
int n=26, n1, i;
scanf("%s", &str);
scanf("%s", &str1);
for(i=0; i<strlen(str); i++)
{
if(map[str1[i]]!=0)
{
if(map[str1[i]] != str[i])
{
printf("0\n");
return 0;
}
}
else
{
map[str1[i]] = str[i];
n--;
}
}
r = n;
n--;
n1 = n;
for(i=0; i<n1; i++)
{
r *= n;
printf("%d\n", n);
r %= 1000000007;
n--;
}
if(r==0)
{
r++;
}
printf("%lld", r);
}
*/
#include<stdio.h>
int m1[2000000];
int main()
{
int n, i, j, k;
int m[200002];
scanf("%d", &n);
for(i=1; i<=n; i++)
{
m[i] = i;
}
m[1] = 0;
for(i=1; i<=n; i++)
{
if(m[i]==0)
{
continue;
}
m1[k++] = i;
for(j=i+1; j<=n; j++)
{
if(m[j]%i==0)
{
m[j]=0;
}
}
}
for(i=0; i<k; i++)
{
printf("%d ", m1[i]);
}
}