public class Euler128 {
    static boolean isPrime(long n) {
        if (n < 2)
            return false;
        if (n < 4)
            return true;
        if (n % 2 == 0 || n % 3 == 0)
            return false;
        for (long p = 5; p * p <= n; p += 6)
            if (n % p == 0 || n % (p + 2) == 0)
                return false;
        return true;
    }

    public static void main(String[] args) {
        int target = 2000;
        long[] values = new long[target];
        values[0] = 1;
        values[1] = 2;
        int cnt = 2;
        for (long k = 2; cnt < target; k++) {
            long a = 6 * k - 1;
            if (isPrime(a) && isPrime(6 * k + 1) && isPrime(12 * k + 5)) {
                values[cnt++] = 3 * k * (k - 1) + 2;
                if (cnt == target)
                    break;
            }
            if (isPrime(a) && isPrime(6 * k + 5) && isPrime(12 * k - 7)) {
                values[cnt++] = 3 * k * (k + 1) + 1;
                if (cnt == target)
                    break;
            }
        }
        System.out.println(values[target - 1]);
    }
}
