#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main() {
    int N;
    cin>>N;
    vector<bool> R(N);
    int zero;
    for(int i=0;i<N;i++)
    {
        cin>>zero;
        R[i]=zero;
    }
    if(N==1)
    {
        cout<<-1;
        return 0;
    }
    if(N==2)
    {
        if(R[0]==1&&R[1]==1)
        {
            cout<<-1;
            return 0;
        }
        else {
            cout<<1;
            return 0;
        }
    }
    if(N>=3)
    {
        if(R[0]==1&&R[1]==1)
        {
            cout<<-1;
            return 0;
        }
        if(R[N-2]==1&&R[N-1]==1)
        {
            cout<<-1;
            return 0;
        }
    }
    int sum=0;
    for(int i=0;i<N;i++)//N>=3
    {
        if(R[i]==1&&i-1>=0&&i+1<N&&R[i-1]==1&&R[i+1]==1)//中间三个1
        {
            cout<<-1;
            break;
        }
        if(R[i]==1)
        {
            if(R[i+1]==0&&R[i+2]==1)//101型 
            {
                sum+=1;
                i=i+2;
            }
            else if(R[i+1]==1)//011型
            {
                sum+=1;
            }
            else if(R[i+1]==0&&R[i+2]==0)//100型
            {
                sum+=1;
            }
        }
    }
    cout<<sum;
}
// 64 位输出请用 printf("%lld")

将所有特殊情况考虑完全后,进行判断即可