#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int a[maxn],dp[maxn],n;
int work(int x,int id){
if(a[id]==0)x=0;
else if(a[id]==1)x=15;
else if(a[id]==2)x=15;
else if(a[id]==3)x--;
else if(a[id]==4)x--;
else if(a[id]==5);
else if(a[id]==6)x++;
else if(a[id]==7)x+=3;
return x;
}
int dfs(int x,int id,int step){
if(id>n||id<1)return step;
x=work(x,id);
if(x==0)return step;
return max(dfs(x,id<<1,step+1),dfs(x,id<<1|1,step+1));
}
signed main()
{
freopen("traversal.in","r",stdin);
freopen("traversal.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
cout<<dfs(0,1,0);
return 0;
}