def truncatable(n):
    left = str(n)
    right = str(n)
    while left != "":
        if not is_prime(int(left)):
            return False
        left = left[1:]
    while right != "":
        if not is_prime(int(right)):
            return False
        right = right[:-1]
    return True
def test_seq(n):
    for x in range(0,3):
        seq_term = guess + x * seq_len
        print(seq_term)
        if not is_permutation(seq_term, guess) and not is_prime(seq_term):
            print("hello")
            break
        elif x == 2:
            return int(str(guess) + str(guess + seq_len) + str(guess + 2 * seq_len))
def solve():
    primes = [2]
    guess = 3
    while True:
        if is_prime(guess):
            primes.append(guess)
        elif not sum_prime_twice_square(guess, primes):
            return guess
        guess += 2
def solve():
    counter = 1
    nat = 1

    while(counter < 10001):
        nat = nat + 2
        if is_prime(nat):
            counter = counter + 1
    return nat
def solve():
    for guess in range(1488,10000): # checked in testing that it's not before 1487
        for seq_len in range(1,9999):
            if guess + 2 * seq_len > 9999:
                break
            for x in range(0,3):
                seq_term = guess + x * seq_len
                if not is_permutation(seq_term, guess) or not is_prime(seq_term):
                    break
                elif x == 2:
                    return int(str(guess) + str(guess + seq_len) + str(guess + 2 * seq_len))
def solve():
    greatest = 0
    for a in range(-1000, 1000):
        for b in range(-1000, 1000):
            n = 0
            while is_prime(n ** 2 + a * n + b):
                n = n + 1
            if n > greatest:
                greatest = n
                best_a = a
                best_b = b
    return best_a * best_b
def solve():
    best_case = '987654321' # 9 digit pandigital would be ideal
    while best_case != '':
        guess_perms = sorted([int(''.join(p)) for p in permutations(best_case)], reverse = True) # find all pandigitals

        for guess in guess_perms:
            if is_pandigital(guess, len(best_case)) and is_prime(guess):
                return guess
            else:
                guess -= 1
            
        best_case = best_case[1:] # truncate if we give up on this many digits
def primes_below(n):
    total = 2
    for x in xrange(3, n, 2):
        if is_prime(x):
            total = total + x
    return total
def all_rotations_prime(n):
    for x in rotations(n):
        if not is_prime(x):
            return False
    return True