package main
import (
"fmt"
)
/*
优先在铭文右侧放能量水晶
再考虑
如果出现至少3个符文相连的情况,则无法全部激活
*/
func main() {
var n int
fmt.Scanf("%d", &n)
var k = make([]int, n)
for i := 0;i<n;i++{
fmt.Scanf("%d", &k[i])
}
var success bool = true
var sum int = 0
for i:=0;i<n;i++ {
if k[i] == 1{
if i+1 < n && k[i+1] == 0 { // 只考虑右侧,因为从左到右遍历
k[i+1] = 2
sum++
i+=2
}else if i+1 < n && k[i+1] == 1 && i-1 >= 0 && k[i-1]==1{
// 两边都有符文,无法全部激活
success = false
break
}else if i+1 < n && k[i+1] == 1 && i-1 >= 0 && k[i-1]==0{
// 左空,右铭文
k[i-1] = 2
sum++
}else if i+1 < n && k[i+1] == 0 && i-1 >= 0 && k[i-1]==1{
// 左铭文,右空
k[i+1] = 2
sum++
}
}
}
// 判断最后两个
if n > 2 {
if k[n-2] == 1 && k[n-1]==1{
success = false
}
if k[n-2] == 0 && k[n-1]==1{
k[n-2] =2
sum++
}
}
if success {
fmt.Println(sum)
} else {
fmt.Println(-1)
}
}