import java.util.*;
import java.io.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
if (n <= 1) {
System.out.println("-1");
return;
}
List<Integer> runesList = new ArrayList<>(n);
st = new StringTokenizer(br.readLine());
while (st.hasMoreTokens()) {
runesList.add(Integer.parseInt(st.nextToken()));
}
int minCrystals = 0;
for (int i = 0; i < runesList.size(); i++) {
if (runesList.get(i) == 1) {
if (i == 0) {
if (runesList.get(i + 1) == 0) {
runesList.set(i + 1, 2);
minCrystals++;
} else if (runesList.get(i + 1) == 1) {
System.out.println("-1");
return;
}
} else if (i == runesList.size() - 1) {
if (runesList.get(i - 1) == 0) {
runesList.set(i - 1, 2);
minCrystals++;
} else if (runesList.get(i - 1) == 1) {
System.out.println("-1");
return;
}
} else {
if (runesList.get(i - 1) == 2) {
continue;
} else if (runesList.get(i - 1) == 1) {
if (runesList.get(i + 1) == 1) {
System.out.println("-1");
return;
} else if (runesList.get(i + 1) == 0) {
runesList.set(i + 1, 2);
minCrystals++;
}
} else if (runesList.get(i - 1) == 0) {
if (runesList.get(i + 1) == 1) {
runesList.set(i - 1, 2);
minCrystals++;
} else if (runesList.get(i + 1) == 0) {
runesList.set(i + 1, 2);
minCrystals++;
}
}
}
}
}
System.out.println(minCrystals);
}
}