description: Petya has got an interesting flower. Petya is a busy person, so he sometimes forgets to water it. You are given n days from Petya's live and you have to determine what happened with his flower in the end.
  
  The flower grows as follows: 
  
    * If the flower isn't watered for two days in a row, it dies. 
    * If the flower is watered in the i-th day, it grows by 1 centimeter. 
    * If the flower is watered in the i-th and in the (i-1)-th day (i > 1), then it grows by 5 centimeters instead of 1. 
    * If the flower is not watered in the i-th day, it does not grow. 
  
  
  
  At the beginning of the 1-st day the flower is 1 centimeter tall. What is its height after n days?
  
  Input
  
  Each test contains multiple test cases. The first line contains the number of test cases t (1 ≤ t ≤ 100). Description of the test cases follows.
  
  The first line of each test case contains the only integer n (1 ≤ n ≤ 100).
  
  The second line of each test case contains n integers a_1, a_2, ..., a_n (a_i = 0 or a_i = 1). If a_i = 1, the flower is watered in the i-th day, otherwise it is not watered.
  
  Output
  
  For each test case print a single integer k — the flower's height after n days, or -1, if the flower dies.
  
  Example
  
  Input
  
  
  4
  3
  1 0 1
  3
  0 1 1
  4
  1 0 0 1
  1
  0
  
  
  Output
  
  
  3
  7
  -1
  1
solution: import java.util.*;
  import java.io.*;
  
  public class Solution
  {
      static class Reader {
  		BufferedReader br;
  		StringTokenizer st;
   
  		public Reader() {
  			br = new BufferedReader(new InputStreamReader(System.in));
  		}
   
  		String next() {
  			while (st == null || !st.hasMoreElements()) {
  				try {
  					st = new StringTokenizer(br.readLine());
  				} catch (IOException e) {
  					e.printStackTrace();
  				}
  			}
  			return st.nextToken();
  		}
  
  		int[] nextArr(int n)
  		{
  		    int a[]=new int[n];
  		    for (int i=0;i<n;i++)a[i]=nextInt();
  		    return a;
  		}
  		
  		int nextInt() {
  			return Integer.parseInt(next());
  		}
  
  		long nextLong() {
  			return Long.parseLong(next());
  		}
   
  		double nextDouble() {
  			return Double.parseDouble(next());
  		}
   
  		String nextLine() {
  			String str = "";
  			try {
  				str = br.readLine();
  			} catch (IOException e) {
  				e.printStackTrace();
  			}
  			return str;
  		}
   
  	}
      static class Ele implements Comparable<Ele> 
      {  
          public int x,y,z;  
          Ele(int x1,int y1,int z1) 
          {  
              x=x1;y=y1; z=z1;
          }  
          public int compareTo(Ele ob) {  
          if(ob.x!=x)return x-ob.x;
          return this.y-ob.y;  
          }   
          public String toString()
          {
          	return "["+x+","+y+"]";
          }
      }
  	void disp(PrintWriter o,boolean b)
      {
          if (b) o.println("YES");
          else o.println("NO");
      }
      void disp(PrintWriter o,int ...a)
      {
          o.println(Arrays.toString(a));
      }
      void disp(PrintWriter o,long ...a)
      {
          o.println(Arrays.toString(a));
      }
      int max(int ...a)
      {
          int x=a[0];
          for (int i:a)x=Math.max(x,i);
          return x;
      }
      int min(int ...a)
      {
          int x=a[0];
          for (int i:a)x=Math.min(x,i);
          return x;
      }
      int dp[][];
  
  	public static void main(String[] args) throws IOException 
  	{
  		Reader sc=new Reader();Solution G=new Solution();//MyMath mm=new MyMath();
  		PrintWriter o = new PrintWriter(System.out);
  		int t=1;t=sc.nextInt();
  		int mod=(int)1e9+7;
  		int x,x0,x1,x2;int y,y0,y1,y2;int s,s0,s1,s2;
  		int n,m;int a[],b[],in[],in1[];
  		long k,l;boolean v[],b1,b2;String ss;char c1[];
  		//long l;long a[]; 
  		ArrayList<ArrayList<Integer>> ll=new ArrayList<>();
  		ArrayList<Integer> a1=new ArrayList<>();
  		ArrayList<Integer> a2=new ArrayList<>();
  		ArrayList<Integer> a3=new ArrayList<>();
  		PriorityQueue<Integer> pq1=new PriorityQueue<>();
  		PriorityQueue<Integer> pq2=new PriorityQueue<>(Collections.reverseOrder());
  		ArrayDeque<Integer> dq=new ArrayDeque<>();
  		TreeSet<Integer> h0=new TreeSet<>();
  		TreeSet<Integer> h1=new TreeSet<>();
  		TreeMap<Integer,Integer> h=new TreeMap<>();
  		try{
  		while (t-->0)
  		{
  		    n=sc.nextInt();a=sc.nextArr(n);b1=true;
  		    for (int i=0;i<n-1;i++)
  		    if (a[i]==0 && a[i+1]==0)b1=false;
  		    if (!b1)o.println(-1);
  		    else
  		    {
  		        x=1;if (a[0]==1)x++;
  		        for (int i=1;i<n;i++)
  		        if (a[i]==1 && a[i-1]==1)x+=5;
  		        else if (a[i]==1)x++;
  		        o.println(x);
  		        
  		    }
  		    //o.println();
  		    //G.disp(o,(y==(x+s))?true:false);
  		    //o.println();
  		    //o.println();
  		    //o.println();
  		    //o.println(h);
  		    //o.println(x2);
  		    //o.println();
  		    h0.clear();ll.clear();a1.clear();a2.clear();h1.clear();h.clear();pq1.clear();pq2.clear();a3.clear();
  		}
  		}
  		catch (Throwable e)
  		{
  		    e.printStackTrace();
  		}
  		//o.println("HI");
  		
          o.flush();
          o.close();
  	}
  } 