//sieve-н алгоритм
#include <bits/stdc++.h>
using namespace std;
int n;
bool Prime[2000000]; // Prime[i] нь i гэсэн тоо анхны тоо бол 0 үгүй бол 1
int main() {
cin >> n;
Prime[1] = 1;
for(int i = 2; i*i <= n; i++) {
if(Prime[i]) continue; // i тоо нь анхны тоо биш тул алгасна.
// i-д хуваагддаг дараачийн бүх тоонууд нь анхны тоо биш тул тэмдэглэнэ.
for(int j = i+i; j <= n; j += i) {
Prime[j] = 1;
}
}
for(int i = 1; i <= n; i++) {
if(!Prime[i]) { // анхны тоо
cout << i << " ";
}
}
cout << endl;
return 0;
}
Ly9zaWV2ZS3QvSDQsNC70LPQvtGA0LjRgtC8ICAKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+ICAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAogICAgICAKICAgIGludCBuOyAgCiAgICBib29sIFByaW1lWzIwMDAwMDBdOyAvLyBQcmltZVtpXSDQvdGMIGkg0LPRjdGB0Y3QvSDRgtC+0L4g0LDQvdGF0L3RiyDRgtC+0L4g0LHQvtC7IDAg0q/Qs9Kv0Lkg0LHQvtC7IDEgIAogIAogIAppbnQgbWFpbigpIHsgIAogICAgY2luID4+IG47ICAKICAgIFByaW1lWzFdID0gMTsgIAogIAogICAgZm9yKGludCBpID0gMjsgaSppIDw9IG47IGkrKykgeyAgCiAgICAgICAgaWYoUHJpbWVbaV0pIGNvbnRpbnVlOyAvLyBpINGC0L7QviDQvdGMINCw0L3RhdC90Ysg0YLQvtC+INCx0LjRiCDRgtGD0Lsg0LDQu9Cz0LDRgdC90LAuICAKICAgICAgICAgIAogICAgICAgIC8vIGkt0LQg0YXRg9Cy0LDQsNCz0LTQtNCw0LMg0LTQsNGA0LDQsNGH0LjQudC9INCx0q/RhSDRgtC+0L7QvdGD0YPQtCDQvdGMINCw0L3RhdC90Ysg0YLQvtC+INCx0LjRiCDRgtGD0Lsg0YLRjdC80LTRjdCz0LvRjdC90Y0uICAKICAgICAgICBmb3IoaW50IGogPSBpK2k7IGogPD0gbjsgaiArPSBpKSB7ICAKICAgICAgICAgICAgUHJpbWVbal0gPSAxOyAgCiAgICAgICAgfSAgCiAgICB9ICAKICAgIAogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgIAlpZighUHJpbWVbaV0pIHsJLy8g0LDQvdGF0L3RiyDRgtC+0L4KICAgIAkJY291dCA8PCBpIDw8ICIgIjsKICAgIAl9CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7ICAKICAKICAgIHJldHVybiAwOyAgCn0gIA==