import java.util.ArrayList; import java.util.Scanner;

public class Main2 { public static void main(String[] args) { //标准输入 Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int size = sc.nextInt(); int[] ints = new int[size]; for (int i = 0; i < size; i++) { int next = sc.nextInt(); ints[i] = next; }

        ArrayList<Integer> j = new ArrayList<>();
        ArrayList<Integer> u = new ArrayList<>();
        for (int i = 0; i < size; i++) {
            if (ints[i] %2 !=0){
                j.add(ints[i]);
            }else {
                u.add(ints[i]);
            }
        }
        int count = 0;
        // 记录偶数对应的伴侣
        int[] bl = new int[u.size()];
        for (int i = 0; i < j.size(); i++) {
            // 记录该轮中的偶数有没有被访问
            boolean[] booleans = new boolean[u.size()];
            if (isOk(j.get(i),u,bl,booleans)){
                count++;
            }
        }
        System.out.println(count);
    }
}

private static boolean isOk(int j, ArrayList<Integer> u, int[] bl, boolean[] booleans) {
    for (int i = 0; i < u.size(); i++) {
        // 是素数且该偶数没有被访问过
        if (isSusu(j + u.get(i)) && !booleans[i]){
            booleans[i] = true;
            // 该位置的偶数没有伴侣,或者他的伴侣能找到新的偶数作为伴侣
            if(bl[i] == 0 || isOk(bl[i],u,bl,booleans)){
                bl[i] = j;
                return true;
            }
        }
    }
    return false;
}

private static boolean isSusu(int i) {
    if(i==1) return false;
    for (int j = 2; j <= (int)Math.sqrt(i); j++) {
        if(i % j == 0){
            return false;
        }
    }
    return true;
}

}