#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
int pole[300001];
for (int i = 0; i <= n; i++) {
cin >> pole[i];
}
if (pole[0] == 1 || pole[n] == 1) {
cout << -1 << "\n";
return 0;
}
int fib[50];
fib[0] = 1;
fib[1] = 2;
int ilosc = 2;
while (true) {
fib[ilosc] = fib[ilosc - 1] + fib[ilosc - 2];
if (fib[ilosc] > n) break;
ilosc++;
}
int dp[300001];
for (int i = 0; i <= n; i++) dp[i] = -1;
dp[0] = 0;
for (int i = 0; i <= n; i++) {
if (dp[i] == -1) continue;
for (int j = 0; j < ilosc; j++) {
int nastepny = i + fib[j];
if (nastepny <= n && pole[nastepny] == 0) {
if (dp[nastepny] == -1 || dp[nastepny] > dp[i] + 1) {
dp[nastepny] = dp[i] + 1;
}
}
}
}
cout << dp[n] << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGludCBuOwogICAgY2luID4+IG47CgogICAgaW50IHBvbGVbMzAwMDAxXTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBwb2xlW2ldOwogICAgfQoKICAgIGlmIChwb2xlWzBdID09IDEgfHwgcG9sZVtuXSA9PSAxKSB7CiAgICAgICAgY291dCA8PCAtMSA8PCAiXG4iOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGludCBmaWJbNTBdOwogICAgZmliWzBdID0gMTsKICAgIGZpYlsxXSA9IDI7CiAgICBpbnQgaWxvc2MgPSAyOwogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBmaWJbaWxvc2NdID0gZmliW2lsb3NjIC0gMV0gKyBmaWJbaWxvc2MgLSAyXTsKICAgICAgICBpZiAoZmliW2lsb3NjXSA+IG4pIGJyZWFrOwogICAgICAgIGlsb3NjKys7CiAgICB9CiAgICBpbnQgZHBbMzAwMDAxXTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykgZHBbaV0gPSAtMTsKICAgIGRwWzBdID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykgewogICAgICAgIGlmIChkcFtpXSA9PSAtMSkgY29udGludWU7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBpbG9zYzsgaisrKSB7CiAgICAgICAgICAgIGludCBuYXN0ZXBueSA9IGkgKyBmaWJbal07CiAgICAgICAgICAgIGlmIChuYXN0ZXBueSA8PSBuICYmIHBvbGVbbmFzdGVwbnldID09IDApIHsKICAgICAgICAgICAgICAgIGlmIChkcFtuYXN0ZXBueV0gPT0gLTEgfHwgZHBbbmFzdGVwbnldID4gZHBbaV0gKyAxKSB7CiAgICAgICAgICAgICAgICAgICAgZHBbbmFzdGVwbnldID0gZHBbaV0gKyAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBkcFtuXSA8PCAiXG4iOwogICAgcmV0dXJuIDA7Cn0=