import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
// while (in.hasNextInt()) { // 注意 while 处理多个 case
// int a = in.nextInt();
// int b = in.nextInt();
// System.out.println(a + b);
// }
int len = in.nextInt();
int[] arr1 = new int[len];
int[] arr2 = new int[len];
int index1 = 0;
int index2 = 0;
for (int i = 0; i < len; i++) {
int n = in.nextInt();
if (n % 2 == 1) {
arr1[index1] = n;
index1++;
} else {
arr2[index2] = n;
index2++;
}
}
int[] matched = new int[index2];
int count = 0;
for (int i = 0; i < index1; i++) {
boolean[] matchArr2 = new boolean[index2];
if (find(arr1[i], matched, arr2, matchArr2)) {
count++;
}
}
System.out.print(count);
}
private static boolean find(int n, int[] matched, int[] arr2,
boolean[] matchArr2) {
boolean find = false;
for (int i = 0; i < arr2.length; i++) {
boolean is = isPrime(n + arr2[i]);
if (n == 571 && i == 11) {
int a = 1;
}
if (arr2[i] == 0) {
break;
}
if (isPrime(n + arr2[i]) && !matchArr2[i]) {
matchArr2[i] = true;
if (matched[i] == 0) {
matched[i] = n;
find = true;
break;
} else {
find = find(matched[i], matched, arr2, matchArr2);
if (find) {
matched[i] = n;
break;
}
}
}
}
return find;
}
private static boolean isPrime(int n) {
boolean b = true;
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
b = false;
break;
}
}
return b;
}
}