#include<cstdio>#include<cstring>#include<vector>using namespace std;bool mat[10][10];void init(){ memset(mat,0,sizeof(mat)); mat[0][1] = mat[0][7] = 1; mat[3][1] = mat[3][7] = 1; mat[4][1] = 1; mat[6][5] = 1; mat[7][1] = 1; mat[9][1] = mat[9][3] = mat[9][4] = mat[9][5] = mat[9][7] = 1; for(int i=0; i<10; i++) mat[8][i] = 1; mat[8][8] = 0;}const int N = 1010;int a[N], match[N];bool vis[N];vector<int> V[N];bool dfs(int x){ for(int i=0; i<V[x].size(); i++){ int j=V[x][i]; if(vis[j]) continue; vis[j]=1; if(match[j]==-1 || dfs(match[j])){ match[j] = x; return 1; } } return 0;}int solve(int n){ memset(match,-1,sizeof(match)); int res = 0; for(int i=1; i<=n; i++){ memset(vis,0,sizeof(vis)); if(dfs(i)) res++; } return res;}int main(){ init(); int n; while(~scanf("%d", &n)){ for(int i=1; i<=n; i++){ V[i].clear(); scanf("%d", a+i); for(int j=1; j<i; j++){ if(mat[a[j]][a[i]]) V[j].push_back(i); } } printf("%dn", n-solve(n)); } return 0;}