#include <iostream>
#include <cstdio>
#include <string>
#include <math.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define maxSize 100000
bool valid[maxSize];
int main()
{
int n,ans[maxSize];
cin>>n;
int tot=0;
int i,j;
for(i=2; i<=n; i++)
{
valid[i]=true;
}
for(i=2; i<=n; i++)
{
if(valid[i])
{
if(n/i<i) break;
}
for(j=i*i; j<=n; j+=i)
{
valid[j]=false;
}
for(i=2; i<=n; ++i)
{
if(valid[i]) ans[++tot]=i;
}
}
for(int i=1; i<tot; i++)
{
cout<<ans[i]<<' ';
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <string>
#include <math.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define maxSize 100000
bool valid[maxSize];
int main()
{
int n,ans[maxSize];
cin>>n;
int tot=0;
int i,j;
memset(valid,true,sizeof(valid));
for(i=2; i<=n; i++)
{
if(valid[i])
{
tot++;
ans[tot]=i;
}
for(j=1; (j<=tot)&&(i*ans[j]<=n); j++)
{
valid[i*ans[j]]=false;
if(i%ans[j]==0)
{
break;
}
}
}
for(int i=1; i<=tot; i++)
{
cout<<ans[i]<<' ';
}
return 0;
}