#include <iostream>
using namespace std;
int prime[500]; // 0 means prime
template<int n> void fillMultiple(int i)
{
prime[n*i]=1;
n*i<500?fillMultiple<n>(i+1):fillMultiple<499>(i);
}
template<> void fillMultiple<499>(int i)
{
}
template<int n> void generatePrime()
{
prime[n]==0?fillMultiple<n>(2):generatePrime<n+1>();
generatePrime<n+1>();
}
template<> void generatePrime<499>()
{
}
int main()
{
prime[0]=prime[1]=1;
generatePrime<2>();
for(int i=0;i<500;i++)
if(0==prime[i])
cout<<i<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IHByaW1lWzUwMF07IC8vIDAgbWVhbnMgcHJpbWUKCnRlbXBsYXRlPGludCBuPiB2b2lkIGZpbGxNdWx0aXBsZShpbnQgaSkKewoJcHJpbWVbbippXT0xOwoJbippPDUwMD9maWxsTXVsdGlwbGU8bj4oaSsxKTpmaWxsTXVsdGlwbGU8NDk5PihpKTsKfQoKdGVtcGxhdGU8PiB2b2lkIGZpbGxNdWx0aXBsZTw0OTk+KGludCBpKQp7Cn0KCnRlbXBsYXRlPGludCBuPiB2b2lkIGdlbmVyYXRlUHJpbWUoKQp7CQoJcHJpbWVbbl09PTA/ZmlsbE11bHRpcGxlPG4+KDIpOmdlbmVyYXRlUHJpbWU8bisxPigpOwoJZ2VuZXJhdGVQcmltZTxuKzE+KCk7Cn0KCnRlbXBsYXRlPD4gdm9pZCBnZW5lcmF0ZVByaW1lPDQ5OT4oKQp7Cn0KCmludCBtYWluKCkKewoJcHJpbWVbMF09cHJpbWVbMV09MTsKCWdlbmVyYXRlUHJpbWU8Mj4oKTsKCglmb3IoaW50IGk9MDtpPDUwMDtpKyspCgkJaWYoMD09cHJpbWVbaV0pCgkJCWNvdXQ8PGk8PGVuZGw7CgoJcmV0dXJuIDA7Cn0=