import java.util.*;

public class Euler200 {
    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 i = 5; i * i <= n; i += 6)
            if (n % i == 0 || n % (i + 2) == 0)
                return false;
        return true;
    }

    static boolean contains200(long x) {
        while (x >= 200) {
            if (x % 1000 == 200)
                return true;
            x /= 10;
        }
        return false;
    }

    static boolean isPrimeProof(long x) {
        String s = Long.toString(x);
        for (int i = 0; i < s.length(); i++) {
            int orig = s.charAt(i) - '0';
            for (int d = 0; d <= 9; d++) {
                if (d == orig)
                    continue;
                if (i == 0 && d == 0)
                    continue;
                long c = Long.parseLong(s.substring(0, i) + d + s.substring(i + 1));
                if (isPrime(c))
                    return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        long limit = (long) 1e12;
        int maxP = (int) Math.sqrt(limit / 8.0) + 10;
        boolean[] sieve = new boolean[maxP + 1];
        Arrays.fill(sieve, true);
        sieve[0] = sieve[1] = false;
        for (int i = 2; i * i <= maxP; i++)
            if (sieve[i])
                for (int j = i * i; j <= maxP; j += i)
                    sieve[j] = false;
        int[] primes = new int[maxP];
        int pc = 0;
        for (int i = 2; i <= maxP; i++)
            if (sieve[i])
                primes[pc++] = i;
        TreeSet<Long> squbes = new TreeSet<>();
        for (int i = 0; i < pc; i++) {
            long p = primes[i];
            if (p * p * 8 > limit)
                break;
            for (int j = 0; j < pc; j++) {
                if (i == j)
                    continue;
                long q = primes[j];
                long v = p * p * q * q * q;
                if (v > limit)
                    break;
                squbes.add(v);
            }
        }
        for (int i = 0; i < pc; i++) {
            long p = primes[i];
            if (p * p * p * 4 > limit)
                break;
            for (int j = 0; j < pc; j++) {
                if (i == j)
                    continue;
                long q = primes[j];
                long v = p * p * p * q * q;
                if (v > limit)
                    break;
                squbes.add(v);
            }
        }
        int count = 0;
        for (long x : squbes) {
            if (!contains200(x))
                continue;
            if (isPrimeProof(x)) {
                count++;
                if (count == 200) {
                    System.out.println(x);
                    return;
                }
            }
        }
    }
}
