#include<bits/stdc++.h>
using namespace std;
// Numeric Constants
#define N 1000000007
#define maxs 200005
#define mins 1005
#define eps 0.000000000001
#define imax 2000000200
#define llmax 1000000002000000000ll
#define pi 3.141592653589793
// Others
#define ll long long
#define pb push_back
#define gc getchar_unlocked
#define iosbase ios_base::sync_with_stdio(false)
#define pii pair<int,int>
#define pll pair<ll,ll>
#define ppi pair<pair<int,int>,int>
#define ppl pair<pll,ll>
#define vi vector<int>
#define sc scanf
#define pr printf
#define lld I64d
#define F first
#define S second
#define siter set<int>::iterator
#define p_pq priority_queue
#define ub upper_bound
#define lb lower_bound
int n1, n2;
int matching[maxs], dist[maxs];
bool used[maxs], vis[maxs];
vector<int>adj[maxs];
queue<int>Q;
map<int,int>mp;
int ans1[maxs];
vector<int>v,v1,v2;
void init(int _n1, int _n2) {
n1 = _n1;
n2 = _n2;
}
void bfs() {
fill(dist, dist + n1, -1);
for(int i=0;i<n1;i++){
if(!used[i]){
Q.push(i);
dist[i]=0;
}
}
while(!Q.empty()){
int u=Q.front();
Q.pop();
for(int i=0;i<adj[u].size();i++){
int v=adj[u][i];
int u2=matching[v];
if(u2>=0 && dist[u2]<0){
dist[u2]=dist[u]+1;
Q.push(u2);
}
}
}
}
bool dfs(int u1) {
vis[u1] = true;
for(int i=0;i<adj[u1].size();i++){
int v=adj[u1][i];
int u2=matching[v];
if(u2<0 || !vis[u2] && dist[u2]==dist[u1]+1 && dfs(u2)){
matching[v]=u1;
used[u1]=true;
return true;
}
}
return false;
}
int maxMatching() {
fill(used, used + n1, false);
fill(matching, matching + n2, -1);
for (int res = 0;;){
bfs();
fill(vis, vis + n1, false);
int f=0;
for(int i=0;i<n1;i++){
if(!used[i] && dfs(i)){
f++;
}
}
if(!f){
return res;
}
res+=f;
}
}
int mark[200005];
int vis1[3005],vis2[3005];
int main()
{
int n,i,j,x;
sc("%d",&n);
for(i=0;i<n;i++){
sc("%d",&x);
if(x&1){
v1.pb(x);
}
else{
v2.pb(x);
}
}
sort(v1.begin(),v1.end());
sort(v2.begin(),v2.end());
reverse(v1.begin(),v1.end());
for(i=2;i<maxs;i++){
if(!mark[i]){
for(j=i*2;j<maxs;j+=i){
mark[j]=1;
}
}
}
int tans=0;
if(v1.size()!=0){
if(v1[v1.size()-1]==1){
int fl=0;
for(j=0;j<v2.size();j++){
if(mark[1+v2[j]]==0){
fl=1;
}
}
if(!fl){
tans++;
n--;
v1.pop_back();
}
}
}
init(v1.size(),v2.size());
for(i=0;i<v1.size();i++){
for(j=0;j<v2.size();j++){
if(mark[v1[i]+v2[j]]==0){
adj[i].pb(j);
vis2[j]=1;
vis1[i]=1;
}
}
}
int fl=0;
for(i=0;i<v1.size();i++){
if(vis1[i]==0){
fl=1;
}
}
for(i=0;i<v2.size();i++){
if(vis2[i]==0){
fl=1;
}
}
if(fl==1){
pr("-1\n");
return 0;
}
int ans=maxMatching();
tans+=(n-ans);
pr("%d\n",tans);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIE51bWVyaWMgQ29uc3RhbnRzCiNkZWZpbmUgTiAxMDAwMDAwMDA3CiNkZWZpbmUgbWF4cyAyMDAwMDUKI2RlZmluZSBtaW5zIDEwMDUKI2RlZmluZSBlcHMgMC4wMDAwMDAwMDAwMDEKI2RlZmluZSBpbWF4IDIwMDAwMDAyMDAKI2RlZmluZSBsbG1heCAxMDAwMDAwMDAyMDAwMDAwMDAwbGwKI2RlZmluZSBwaSAzLjE0MTU5MjY1MzU4OTc5MwoKLy8gT3RoZXJzCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZ2MgZ2V0Y2hhcl91bmxvY2tlZAojZGVmaW5lIGlvc2Jhc2UgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSkKI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHBsbCBwYWlyPGxsLGxsPgojZGVmaW5lIHBwaSBwYWlyPHBhaXI8aW50LGludD4saW50PgojZGVmaW5lIHBwbCBwYWlyPHBsbCxsbD4KI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIHNjIHNjYW5mCiNkZWZpbmUgcHIgcHJpbnRmCiNkZWZpbmUgbGxkIEk2NGQKI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSBzaXRlciBzZXQ8aW50Pjo6aXRlcmF0b3IKI2RlZmluZSBwX3BxIHByaW9yaXR5X3F1ZXVlCiNkZWZpbmUgdWIgdXBwZXJfYm91bmQKI2RlZmluZSBsYiBsb3dlcl9ib3VuZAoKCmludCBuMSwgbjI7CmludCBtYXRjaGluZ1ttYXhzXSwgZGlzdFttYXhzXTsKYm9vbCB1c2VkW21heHNdLCB2aXNbbWF4c107CnZlY3RvcjxpbnQ+YWRqW21heHNdOwpxdWV1ZTxpbnQ+UTsKbWFwPGludCxpbnQ+bXA7CmludCBhbnMxW21heHNdOwp2ZWN0b3I8aW50PnYsdjEsdjI7Cgp2b2lkIGluaXQoaW50IF9uMSwgaW50IF9uMikgewogICAgbjEgPSBfbjE7CiAgICBuMiA9IF9uMjsKfQoKdm9pZCBiZnMoKSB7CiAgICBmaWxsKGRpc3QsIGRpc3QgKyBuMSwgLTEpOwogICAgZm9yKGludCBpPTA7aTxuMTtpKyspewogICAgICAgIGlmKCF1c2VkW2ldKXsKICAgICAgICAgICAgUS5wdXNoKGkpOwogICAgICAgICAgICBkaXN0W2ldPTA7CiAgICAgICAgfQogICAgfQogICAgd2hpbGUoIVEuZW1wdHkoKSl7CiAgICAgICAgaW50IHU9US5mcm9udCgpOwogICAgICAgIFEucG9wKCk7CiAgICAgICAgZm9yKGludCBpPTA7aTxhZGpbdV0uc2l6ZSgpO2krKyl7CiAgICAgICAgICAgIGludCB2PWFkalt1XVtpXTsKICAgICAgICAgICAgaW50IHUyPW1hdGNoaW5nW3ZdOwogICAgICAgICAgICBpZih1Mj49MCAmJiBkaXN0W3UyXTwwKXsKICAgICAgICAgICAgICAgIGRpc3RbdTJdPWRpc3RbdV0rMTsKICAgICAgICAgICAgICAgIFEucHVzaCh1Mik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmJvb2wgZGZzKGludCB1MSkgewogICAgdmlzW3UxXSA9IHRydWU7CiAgICBmb3IoaW50IGk9MDtpPGFkalt1MV0uc2l6ZSgpO2krKyl7CiAgICAgICAgaW50IHY9YWRqW3UxXVtpXTsKICAgICAgICBpbnQgdTI9bWF0Y2hpbmdbdl07CiAgICAgICAgaWYodTI8MCB8fCAhdmlzW3UyXSAmJiBkaXN0W3UyXT09ZGlzdFt1MV0rMSAmJiBkZnModTIpKXsKICAgICAgICAgICAgbWF0Y2hpbmdbdl09dTE7CiAgICAgICAgICAgIHVzZWRbdTFdPXRydWU7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBmYWxzZTsKfQoKaW50IG1heE1hdGNoaW5nKCkgewogICAgZmlsbCh1c2VkLCB1c2VkICsgbjEsIGZhbHNlKTsKICAgIGZpbGwobWF0Y2hpbmcsIG1hdGNoaW5nICsgbjIsIC0xKTsKICAgIGZvciAoaW50IHJlcyA9IDA7Oyl7CiAgICAgICAgYmZzKCk7CiAgICAgICAgZmlsbCh2aXMsIHZpcyArIG4xLCBmYWxzZSk7CiAgICAgICAgaW50IGY9MDsKICAgICAgICBmb3IoaW50IGk9MDtpPG4xO2krKyl7CiAgICAgICAgICAgIGlmKCF1c2VkW2ldICYmIGRmcyhpKSl7CiAgICAgICAgICAgICAgICBmKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoIWYpewogICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgIH0KICAgICAgICByZXMrPWY7CiAgICB9Cn0KCmludCBtYXJrWzIwMDAwNV07CmludCB2aXMxWzMwMDVdLHZpczJbMzAwNV07CgppbnQgbWFpbigpCnsKICAgIGludCBuLGksaix4OwogICAgc2MoIiVkIiwmbik7CiAgICBmb3IoaT0wO2k8bjtpKyspewogICAgICAgc2MoIiVkIiwmeCk7CiAgICAgICBpZih4JjEpewogICAgICAgICAgICB2MS5wYih4KTsKICAgICAgIH0KICAgICAgIGVsc2V7CiAgICAgICAgICAgIHYyLnBiKHgpOwogICAgICAgfQogICAgfQogICAgc29ydCh2MS5iZWdpbigpLHYxLmVuZCgpKTsKICAgIHNvcnQodjIuYmVnaW4oKSx2Mi5lbmQoKSk7CiAgICByZXZlcnNlKHYxLmJlZ2luKCksdjEuZW5kKCkpOwogICAgZm9yKGk9MjtpPG1heHM7aSsrKXsKICAgICAgIGlmKCFtYXJrW2ldKXsKICAgICAgICAgICAgZm9yKGo9aSoyO2o8bWF4cztqKz1pKXsKICAgICAgICAgICAgICAgIG1hcmtbal09MTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGludCB0YW5zPTA7CiAgICBpZih2MS5zaXplKCkhPTApewogICAgICAgIGlmKHYxW3YxLnNpemUoKS0xXT09MSl7CiAgICAgICAgICAgIGludCBmbD0wOwogICAgICAgICAgICBmb3Ioaj0wO2o8djIuc2l6ZSgpO2orKyl7CiAgICAgICAgICAgICAgICBpZihtYXJrWzErdjJbal1dPT0wKXsKICAgICAgICAgICAgICAgICAgIGZsPTE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIWZsKXsKICAgICAgICAgICAgICAgIHRhbnMrKzsKICAgICAgICAgICAgICAgIG4tLTsKICAgICAgICAgICAgICAgIHYxLnBvcF9iYWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpbml0KHYxLnNpemUoKSx2Mi5zaXplKCkpOwogICAgZm9yKGk9MDtpPHYxLnNpemUoKTtpKyspewogICAgICAgIGZvcihqPTA7ajx2Mi5zaXplKCk7aisrKXsKICAgICAgICAgICAgaWYobWFya1t2MVtpXSt2MltqXV09PTApewogICAgICAgICAgICAgICAgYWRqW2ldLnBiKGopOwogICAgICAgICAgICAgICAgdmlzMltqXT0xOwogICAgICAgICAgICAgICAgdmlzMVtpXT0xOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaW50IGZsPTA7CiAgICBmb3IoaT0wO2k8djEuc2l6ZSgpO2krKyl7CiAgICAgICAgaWYodmlzMVtpXT09MCl7CiAgICAgICAgICAgIGZsPTE7CiAgICAgICAgfQogICAgfQogICAgZm9yKGk9MDtpPHYyLnNpemUoKTtpKyspewogICAgICAgIGlmKHZpczJbaV09PTApewogICAgICAgICAgICBmbD0xOwogICAgICAgIH0KICAgIH0KICAgIGlmKGZsPT0xKXsKICAgICAgICBwcigiLTFcbiIpOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgaW50IGFucz1tYXhNYXRjaGluZygpOwogICAgdGFucys9KG4tYW5zKTsKICAgIHByKCIlZFxuIix0YW5zKTsKICAgIHJldHVybiAwOwp9