#include <iostream>
#include <vector>
using namespace std;
void sieve(int n)
{
int i, j;
vector<bool> is_prime(n+1);
// initialize the list of primes to include all
// numbers from 2 to n
is_prime[0] = false;
is_prime[1] = false;
for (i=2; i<=n; i++)
is_prime[i] = true;
// do the scratching out
for (i=2; i<=n; i++)
if (is_prime[i])
for (j=2*i; j<=n; j+=i)
is_prime[j] = false;
// print out the primes
for (i=0; i<=n; i++)
if (is_prime[i])
cout << i << endl;
}
int main()
{
int n;
// read n from input
cin >> n;
// find all primes <= n and print them out
sieve(n);
// return from main with 0
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgc2lldmUoaW50IG4pCnsKICBpbnQgaSwgajsKICB2ZWN0b3I8Ym9vbD4gaXNfcHJpbWUobisxKTsKCiAgLy8gaW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBwcmltZXMgdG8gaW5jbHVkZSBhbGwKICAvLyBudW1iZXJzIGZyb20gMiB0byBuCgogIGlzX3ByaW1lWzBdID0gZmFsc2U7CiAgaXNfcHJpbWVbMV0gPSBmYWxzZTsKICBmb3IgKGk9MjsgaTw9bjsgaSsrKQogICAgaXNfcHJpbWVbaV0gPSB0cnVlOwoKICAvLyBkbyB0aGUgc2NyYXRjaGluZyBvdXQKCiAgZm9yIChpPTI7IGk8PW47IGkrKykKICAgIGlmIChpc19wcmltZVtpXSkKICAgICAgZm9yIChqPTIqaTsgajw9bjsgais9aSkKICAgICAgICBpc19wcmltZVtqXSA9IGZhbHNlOwoKICAvLyBwcmludCBvdXQgdGhlIHByaW1lcwoKICBmb3IgKGk9MDsgaTw9bjsgaSsrKQogICAgaWYgKGlzX3ByaW1lW2ldKQogICAgICBjb3V0IDw8IGkgPDwgZW5kbDsgCn0KCmludCBtYWluKCkKewogIGludCBuOwoKICAvLyByZWFkIG4gZnJvbSBpbnB1dAoKICBjaW4gPj4gbjsKCiAgLy8gZmluZCBhbGwgcHJpbWVzIDw9IG4gYW5kIHByaW50IHRoZW0gb3V0CgogIHNpZXZlKG4pOwoKICAvLyByZXR1cm4gZnJvbSBtYWluIHdpdGggMAoKICByZXR1cm4gMDsKfQ==