You are given an array a consisting of n integers. Each a_i is one of the six following numbers: 4, 8, 15, 16, 23, 42.

Your task is to remove the minimum number of elements to make this array good.

An array of length k is called good if k is divisible by 6 and it is possible to split it into k/6 subsequences 4, 8, 15, 16, 23, 42.

Examples of good arrays:

  * [4, 8, 15, 16, 23, 42] (the whole array is a required sequence); 
  * [4, 8, 4, 15, 16, 8, 23, 15, 16, 42, 23, 42] (the first sequence is formed from first, second, fourth, fifth, seventh and tenth elements and the second one is formed from remaining elements); 
  * [] (the empty array is good). 



Examples of bad arrays: 

  * [4, 8, 15, 16, 42, 23] (the order of elements should be exactly 4, 8, 15, 16, 23, 42); 
  * [4, 8, 15, 16, 23, 42, 4] (the length of the array is not divisible by 6); 
  * [4, 8, 15, 16, 23, 42, 4, 8, 15, 16, 23, 23] (the first sequence can be formed from first six elements but the remaining array cannot form the required sequence). 

Input

The first line of the input contains one integer n (1 ≤ n ≤ 5 ⋅ 10^5) — the number of elements in a.

The second line of the input contains n integers a_1, a_2, ..., a_n (each a_i is one of the following numbers: 4, 8, 15, 16, 23, 42), where a_i is the i-th element of a.

Output

Print one integer — the minimum number of elements you have to remove to obtain a good array.

Examples

Input


5
4 8 15 16 23


Output


5


Input


12
4 8 4 15 16 8 23 15 16 42 23 42


Output


0


Input


15
4 8 4 8 15 16 8 16 23 15 16 4 42 23 42


Output


3
//make sure to make new file!
import java.io.*;
import java.util.*;

public class C565{
   
   public static void main(String[] args)throws IOException{
      BufferedReader f = new BufferedReader(new InputStreamReader(System.in));
      PrintWriter out = new PrintWriter(System.out);
      
      int n = Integer.parseInt(f.readLine());
      
      StringTokenizer st = new StringTokenizer(f.readLine());
      
      int[] itoi = new int[43];
      itoi[4] = 0;
      itoi[8] = 1;
      itoi[15] = 2;
      itoi[16] = 3;
      itoi[23] = 4;
      itoi[42] = 5;
      int[] array = new int[n];
      ArrayList<Queue<Integer>> alist = new ArrayList<Queue<Integer>>(6);
      for(int k = 0; k < 6; k++){
         alist.add(new LinkedList<Integer>());
      }
      
      for(int k = 0; k < n; k++){
         array[k] = Integer.parseInt(st.nextToken());
         alist.get(itoi[array[k]]).add(k);
      }
      
      int added = n;
      
      int answer = 0;
      int lastindex = -1;
      while(added > 0){
         lastindex = -1;
         
         for(int k = 0; k < 6; k++){
            if(alist.get(k).isEmpty()){
               answer += added;
               added = 0;
               break;
            } else {
               int i = alist.get(k).poll();
               while( i < lastindex){
                  if(alist.get(k).isEmpty()){
                     answer += added;
                     added = 0;
                     break;
                  }
                  i = alist.get(k).poll();
               }
               lastindex = i;
            }
         }
         
         added -= 6;
      }
      
      out.println(answer);

      
      
      
      
      out.close();
   }
   
      
}