#include <bits/stdc++.h>
using namespace std;
vector<int> sieve(int n){
vector<bool> prime(n+1, true);
prime[0] = false;
prime[1] = false;
for (int i = 2; i <= sqrt(n); i++){
if(prime[i] == true){
for (int j = i*i ; j <= n; j += i){
prime[j] = false;
}
}
}
vector<int> result;
for (int i = 2; i <= n; i++){
if(prime[i]){
result.push_back(i);
}
}
return result;
}
int main()
{
int n; cin >> n;
vector<int> result = sieve(n);
for (auto i : result){
cout << i << " ";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PiBzaWV2ZShpbnQgbil7CgkKCXZlY3Rvcjxib29sPiBwcmltZShuKzEsIHRydWUpOwoJcHJpbWVbMF0gPSBmYWxzZTsKCXByaW1lWzFdID0gZmFsc2U7Cglmb3IgKGludCBpID0gMjsgaSA8PSBzcXJ0KG4pOyBpKyspewoJCQoJCWlmKHByaW1lW2ldID09IHRydWUpewoJCQkKCQkJZm9yIChpbnQgaiA9IGkqaSA7IGogPD0gbjsgaiArPSBpKXsKCQkJCXByaW1lW2pdID0gZmFsc2U7CgkJCX0KCQl9CgkJCgkJCgl9CgkKCXZlY3RvcjxpbnQ+IHJlc3VsdDsKCWZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKyl7CgkJaWYocHJpbWVbaV0pewoJCQlyZXN1bHQucHVzaF9iYWNrKGkpOwoJCX0KCX0KCQoJcmV0dXJuIHJlc3VsdDsKfQppbnQgbWFpbigpCnsKCWludCBuOyBjaW4gPj4gbjsKCXZlY3RvcjxpbnQ+IHJlc3VsdCA9IHNpZXZlKG4pOwoJZm9yIChhdXRvIGkgOiByZXN1bHQpewoJCWNvdXQgPDwgaSA8PCAiICI7Cgl9CgkKCXJldHVybiAwOwp9CgoK