/* http://projecteuler.net/
 *
 * Problem 58
 * Investigate the number of primes that lie on the diagonals of the
 * spiral grid.
 *
 * Solution by Melkor (Filip Niksic, fniksic@gmail.com)
 *
 **/

#include <iostream>
#include <bitset>

using namespace std;

//const int max_num = 1000000000;

//bitset<max_num> sieve;

/*void generate_primes() {
    sieve.set();
    sieve.reset(0);
    sieve.reset(1);

    for (int i = 2; i*i < max_num; ++i)
	if (sieve[i])
	    for (int j = i+i; j < max_num; j += i)
		sieve.reset(j);
}*/

bool is_prime(int n) {
    if (n % 2 == 0)
	return false;
    for (int d = 3; d*d <= n; d += 2)
	if (n % d == 0)
	    return false;
    return true;
}

int main() {
    //generate_primes();

    int primes = 3, total = 5, last = 9, s = 3;
    while (static_cast<double>(primes)/total >= 0.1 /*&& (s+1)*(s+1) < max_num*/) {
	total += 4;
	// for i==4, last + i*(s+1) most certanly isn't prime
	for (int i = 1; i <= 3; ++i)
	    //if (sieve[last + i*(s+1)])
	    if (is_prime(last + i*(s+1)))
		++primes;
	last += 4*(s+1);
	s += 2;
    }

    //cout << static_cast<double>(primes)/total << endl;
    cout << s << endl;
    return 0;
}

