#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <fstream>
#include<stdlib.h>
#define rep( i, l, r ) for (int i = l; i <= r; i++)
#define down( i, l, r ) for (int i = l; i >= r; i--)
using namespace std;
int n, num[10009], ans, now[10009];
void Seache(int w)
{
if (w == 1)
{
if (num[1] == 2)
{
now[1] = now[2] = 1; Seache(2);
}
else if (num[1] == 0)
{
now[1] = now[2] = 0; Seache(2);
}
else
{
now[1] = 1; now[2] = 0; Seache(2);
now[1] = 0; now[2] = 1; Seache(2);
}
}
else if (w == n)
{
if (num[w] == now[w-1] + now[w]) ans++;
}
else
{
int a = num[w] - now[w-1] - now[w];
if (a == 0)
{
now[w+1] = 0; Seache(w+1);
}
else if (a == 1)
{
now[w+1] = 1; Seache(w+1);
}
}
}
int main()
{
scanf("%d", &n);
rep(i, 1, n) scanf("%d", &num[i]);
ans = 0;
rep(i, 1, n) if (num[i] > 3 || num[i] < 0) ans = -1;
if (num[1] > 2 || num[n] > 2) ans = -1;
rep(i, 2, n) if (num[i-1] - num[i] < -1 || num[i-1] - num[i] > 1) ans = -1;
if (ans != -1) Seache(1); else ans = 0;
printf("%d", ans);
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGU8c3RkbGliLmg+CgojZGVmaW5lIHJlcCggaSwgbCwgciApIGZvciAoaW50IGkgPSBsOyBpIDw9IHI7IGkrKykKI2RlZmluZSBkb3duKCBpLCBsLCByICkgZm9yIChpbnQgaSA9IGw7IGkgPj0gcjsgaS0tKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBuLCBudW1bMTAwMDldLCBhbnMsIG5vd1sxMDAwOV07Cgp2b2lkIFNlYWNoZShpbnQgdykKewoJaWYgKHcgPT0gMSkKCXsKCQlpZiAobnVtWzFdID09IDIpIAoJCXsKCQkJbm93WzFdID0gbm93WzJdID0gMTsgU2VhY2hlKDIpOyAKCQl9CgkJZWxzZSBpZiAobnVtWzFdID09IDApIAoJCXsKCQkJbm93WzFdID0gbm93WzJdID0gMDsgU2VhY2hlKDIpOyAKCQl9CgkJZWxzZQoJCXsKCQkJbm93WzFdID0gMTsgbm93WzJdID0gMDsgU2VhY2hlKDIpOyAKCQkJbm93WzFdID0gMDsgbm93WzJdID0gMTsgU2VhY2hlKDIpOyAKCQl9Cgl9CgllbHNlIGlmICh3ID09IG4pIAoJewoJCWlmIChudW1bd10gPT0gbm93W3ctMV0gKyBub3dbd10pIGFucysrOwoJfQoJZWxzZSAKCXsKCQlpbnQgYSA9IG51bVt3XSAtIG5vd1t3LTFdIC0gbm93W3ddOwoJCWlmIChhID09IDApCgkJewoJCQlub3dbdysxXSA9IDA7IFNlYWNoZSh3KzEpOwoJCX0KCQllbHNlIGlmIChhID09IDEpCgkJewoJCQlub3dbdysxXSA9IDE7IFNlYWNoZSh3KzEpOwoJCX0KCX0KfQoKaW50IG1haW4oKQp7CglzY2FuZigiJWQiLCAmbik7CglyZXAoaSwgMSwgbikgc2NhbmYoIiVkIiwgJm51bVtpXSk7CglhbnMgPSAwOwoJcmVwKGksIDEsIG4pIGlmIChudW1baV0gPiAzIHx8IG51bVtpXSA8IDApIGFucyA9IC0xOwoJaWYgKG51bVsxXSA+IDIgfHwgbnVtW25dID4gMikgYW5zID0gLTE7IAoJcmVwKGksIDIsIG4pIGlmIChudW1baS0xXSAtIG51bVtpXSA8IC0xIHx8IG51bVtpLTFdIC0gbnVtW2ldID4gMSkgYW5zID0gLTE7CglpZiAoYW5zICE9IC0xKSBTZWFjaGUoMSk7IGVsc2UgYW5zID0gMDsKCXByaW50ZigiJWQiLCBhbnMpOwoJcmV0dXJuIDA7Cn0K