import java.math.BigInteger;

public class Euler111 {
    static boolean isPrime(long n) {
        if (n < 2)
            return false;
        if (n < 4)
            return true;
        if (n % 2 == 0 || n % 3 == 0)
            return false;
        BigInteger bi = BigInteger.valueOf(n);
        return bi.isProbablePrime(30);
    }

    public static void main(String[] args) {
        int N = 10;
        long total = 0;
        for (int d = 0; d <= 9; d++) {
            boolean found = false;
            for (int rep = 1; rep <= N && !found; rep++) {
                // rep = number of positions replaced (non-d digits)
                long sum = 0;
                boolean any = false;
                int[] pos = new int[rep];
                for (int i = 0; i < rep; i++)
                    pos[i] = i;
                // iterate over all combinations of 'rep' positions out of N
                outer: while (true) {
                    int[] digits = new int[N];
                    java.util.Arrays.fill(digits, d);
                    // try all replacement values
                    int[] repl = new int[rep];
                    inner: while (true) {
                        boolean valid = true;
                        for (int i = 0; i < rep; i++) {
                            if (repl[i] == d) {
                                valid = false;
                                break;
                            }
                            digits[pos[i]] = repl[i];
                        }
                        if (valid && digits[0] != 0) {
                            long val = 0;
                            for (int i = 0; i < N; i++)
                                val = val * 10 + digits[i];
                            if (isPrime(val)) {
                                sum += val;
                                any = true;
                            }
                        }
                        // restore
                        for (int i = 0; i < rep; i++)
                            digits[pos[i]] = d;
                        // next replacement combo
                        int carry = rep - 1;
                        while (carry >= 0) {
                            repl[carry]++;
                            if (repl[carry] < 10)
                                break;
                            repl[carry] = 0;
                            carry--;
                        }
                        if (carry < 0)
                            break;
                    }
                    // next combination
                    int k = rep - 1;
                    while (k >= 0 && pos[k] == N - rep + k)
                        k--;
                    if (k < 0)
                        break;
                    pos[k]++;
                    for (int i = k + 1; i < rep; i++)
                        pos[i] = pos[i - 1] + 1;
                }
                if (any) {
                    total += sum;
                    found = true;
                }
            }
        }
        System.out.println(total);
    }
}
