#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6;
int sieve[maxn];
int main()
{
for(int i = 0; i < maxn; ++i) {
sieve[i] = 1;
}
for(int i = 2; i < maxn; ++i) {
for(int j = 2 * i; j < maxn; j += i) {
sieve[j] = 0;
}
}
sieve[0] = 0;
// for (int i = 0; i < 20; ++i) {
// cout << i << " " << sieve[i] << endl;
// }
int n;
cin >> n;
vector<int> vec(n);
for (int& a: vec) {
cin >> a;
}
bool wfail = 0;
int cnt = 0;
for (int i = 0; i <= n - 1; ++i) {
if (i == n - 1) {
if (vec[i] == 2 || vec[i] == 0) {
break;
}
if (sieve[vec[i]] == 1) {
wfail = true;
break;
}
}
if (vec[i] == 2 || sieve[vec[i]] == 0) {
continue;
} else {
vec[i + 1]++;
cnt++;
continue;
}
}
if (wfail == true) {
cout << "-1";
} else {
cout << cnt;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgbWF4biA9IDFlNjsKaW50IHNpZXZlW21heG5dOwppbnQgbWFpbigpCnsKICBmb3IoaW50IGkgPSAwOyBpIDwgbWF4bjsgKytpKSB7CiAgICBzaWV2ZVtpXSA9IDE7CiAgfQogIGZvcihpbnQgaSA9IDI7IGkgPCBtYXhuOyArK2kpIHsKICAgIGZvcihpbnQgaiA9IDIgKiBpOyBqIDwgbWF4bjsgaiArPSBpKSB7CiAgICAgIHNpZXZlW2pdID0gMDsKICAgIH0KICB9CiAgc2lldmVbMF0gPSAwOwoKICAvLyBmb3IgKGludCBpID0gMDsgaSA8IDIwOyArK2kpIHsKICAvLyAgIGNvdXQgPDwgaSA8PCAiICIgPDwgc2lldmVbaV0gPDwgZW5kbDsKICAvLyB9CiAgaW50IG47CiAgY2luID4+IG47CiAgdmVjdG9yPGludD4gdmVjKG4pOwogIGZvciAoaW50JiBhOiB2ZWMpIHsKICAgIGNpbiA+PiBhOwogIH0KCiAgYm9vbCB3ZmFpbCA9IDA7CiAgaW50IGNudCA9IDA7CiAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbiAtIDE7ICsraSkgewogICAgaWYgKGkgPT0gbiAtIDEpIHsKICAgICAgaWYgKHZlY1tpXSA9PSAyIHx8IHZlY1tpXSA9PSAwKSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgaWYgKHNpZXZlW3ZlY1tpXV0gPT0gMSkgewogICAgICAgIHdmYWlsID0gdHJ1ZTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogICAgCiAgICBpZiAodmVjW2ldID09IDIgfHwgc2lldmVbdmVjW2ldXSA9PSAwKSB7CiAgICAgIGNvbnRpbnVlOwogICAgfSBlbHNlIHsKICAgICAgdmVjW2kgKyAxXSsrOwogICAgICBjbnQrKzsKICAgICAgY29udGludWU7CiAgICB9CiAgfQoKICBpZiAod2ZhaWwgPT0gdHJ1ZSkgewogICAgY291dCA8PCAiLTEiOwogIH0gZWxzZSB7CiAgICBjb3V0IDw8IGNudDsKICB9Cgp9