/* http://projecteuler.net/
 *
 * Problem 27
 * Find the product of the coefficients, a and b, |a|<=1000, |b|<=1000,
 * for the quadratic expression n^2+an+b that produces the maximum number
 * of primes for consecutive values of n, starting with n = 0.
 *
 * Solution by Melkor (Filip Niksic, fniksic@gmail.com)
 *
 **/

#include <iostream>
#include <cstdlib>
#include <bitset>

using namespace std;

const int maxPrime = 2001000;

bitset<maxPrime+1> sieve;

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

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

int length(int a, int b) {
    int n = 0;
    while (sieve[abs(n*n + a*n + b)])
	++n;
    return n;
}

int main() {
    generate_primes();

    int max_prod, max_len = 0;
    for (int a = -999; a < 1000; ++a)
	for (int b = -999; b < 1000; ++b) {
	    int len = length(a, b);
	    if (len > max_len) {
		max_len = len;
		max_prod = a * b;
	    }
	}

    cout << max_prod << endl;

    return 0;
}

