线性筛素数
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#define in(a) a=read()
#define REP(i,k,n) for(int i=k;i<=n;i++)
using namespace std;
inline int read(){
int x=0,f=1;
char ch=getchar();
for(;!isdigit(ch);ch=getchar())
if(ch=='-')
f=-1;
for(;isdigit(ch);ch=getchar())
x=x*10+ch-'0';
return x*f;
}
int prime[1000010],book[1000010];
int n,ind;
int main(){
in(n);
REP(i,2,n){
if(!book[i]) prime[++ind]=i;
REP(j,1,ind){
if(i*prime[j]>n) break;
book[i*prime[j]]=1;
if(!i%prime[j]) break;
}
}
REP(i,1,ind) printf("%d ",prime[i]);
}