#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll> ans;
void sieve(ll n){
vector<bool> isPrime(n+1, true);
isPrime[0] = false;
isPrime[1] = false;
for(ll p=2;p<=sqrt(n);p++){
if(isPrime[p]){
for(ll i=p*p;i<=n;i+=p){
isPrime[i]=false;
}
}
}
for(ll i=2;i<=n;i++){
if(isPrime[i])
ans.push_back(i);
}
}
int main() {
ll n;
cin >> n;
sieve(n);
for(ll i=0;i<ans.size();i++)
cout<<ans[i]<<" ";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdmVjdG9yPGxsPiBhbnM7CnZvaWQgc2lldmUobGwgbil7CiAgICB2ZWN0b3I8Ym9vbD4gaXNQcmltZShuKzEsIHRydWUpOyAKICAgIGlzUHJpbWVbMF0gPSBmYWxzZTsKICAgIGlzUHJpbWVbMV0gPSBmYWxzZTsKICAgIAogICAgZm9yKGxsIHA9MjtwPD1zcXJ0KG4pO3ArKyl7IAogICAgICAgIGlmKGlzUHJpbWVbcF0pewogICAgICAgICAgICBmb3IobGwgaT1wKnA7aTw9bjtpKz1wKXsgCiAgICAgICAgICAgICAgICBpc1ByaW1lW2ldPWZhbHNlOyAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgZm9yKGxsIGk9MjtpPD1uO2krKyl7CiAgICAgICAgaWYoaXNQcmltZVtpXSkKICAgICAgICAgICAgYW5zLnB1c2hfYmFjayhpKTsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBsbCBuOwogICAgY2luID4+IG47CglzaWV2ZShuKTsgCiAgICBmb3IobGwgaT0wO2k8YW5zLnNpemUoKTtpKyspCiAgICAgICAgY291dDw8YW5zW2ldPDwiICI7CiAgICByZXR1cm4gMDsKfQ==