source_code: import java.io.DataInputStream;
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.util.*;
  
  public class B {
  	
  	public static void main(String[] args) throws IOException {
  		
  		Reader scan = new Reader();
  		int t = scan.nextInt();
  		for(int tt = 0;tt<t;tt++) {
  			
  			int n = scan.nextInt();
  			int arr[] = new int[n];
  			for(int i = 0;i<n;i++) arr[i] = scan.nextInt();
  			
  			List<Integer> list = new ArrayList<>();
  			int j = -1;
  			StringBuilder s = new StringBuilder();
  			for(int i = 0;i<n;i++) {
  				if(list.isEmpty() || arr[i]==1) { //add
  					list.add(arr[i]);
  					j++;
  				}
  				else if(arr[i] == list.get(j)+1) { //replace
  					list.set(j, arr[i]);
  				}
  				else {
  					for(int k = j;k>=0;k--) {
  						if(arr[i] == list.get(k)+1) {//replace
  							list.set(k, arr[i]);
  							break;
  						}
  						else {//delete
  							list.remove(k);
  							j--;
  						}
  					}
  				}
  				s.delete(0, s.length());
  				for(Integer p:list) {
  					s.append(p+".");
  				}
  				s.deleteCharAt(s.length()-1);
  				System.out.println(s.toString());
  			}
  		}
  
  		scan.close();
  		
  	}
  	
  	static class Reader 
  	{ 
  		final private int BUFFER_SIZE = 1 << 16; 
  		private DataInputStream din; 
  		private byte[] buffer; 
  		private int bufferPointer, bytesRead; 
  
  		public Reader() 
  		{ 
  			din = new DataInputStream(System.in); 
  			buffer = new byte[BUFFER_SIZE]; 
  			bufferPointer = bytesRead = 0; 
  		} 
  
  		public Reader(String file_name) throws IOException 
  		{ 
  			din = new DataInputStream(new FileInputStream(file_name)); 
  			buffer = new byte[BUFFER_SIZE]; 
  			bufferPointer = bytesRead = 0; 
  		} 
  
  		public String readLine() throws IOException 
  		{ 
  			byte[] buf = new byte[64]; // line length 
  			int cnt = 0, c; 
  			while ((c = read()) != -1) 
  			{ 
  				if (c == '\n') 
  					break; 
  				buf[cnt++] = (byte) c; 
  			} 
  			return new String(buf, 0, cnt); 
  		} 
  
  		public int nextInt() throws IOException 
  		{ 
  			int ret = 0; 
  			byte c = read(); 
  			while (c <= ' ') 
  				c = read(); 
  			boolean neg = (c == '-'); 
  			if (neg) 
  				c = read(); 
  			do
  			{ 
  				ret = ret * 10 + c - '0'; 
  			}  while ((c = read()) >= '0' && c <= '9'); 
  
  			if (neg) 
  				return -ret; 
  			return ret; 
  		} 
  
  		public long nextLong() throws IOException 
  		{ 
  			long ret = 0; 
  			byte c = read(); 
  			while (c <= ' ') 
  				c = read(); 
  			boolean neg = (c == '-'); 
  			if (neg) 
  				c = read(); 
  			do { 
  				ret = ret * 10 + c - '0'; 
  			} 
  			while ((c = read()) >= '0' && c <= '9'); 
  			if (neg) 
  				return -ret; 
  			return ret; 
  		} 
  
  		public double nextDouble() throws IOException 
  		{ 
  			double ret = 0, div = 1; 
  			byte c = read(); 
  			while (c <= ' ') 
  				c = read(); 
  			boolean neg = (c == '-'); 
  			if (neg) 
  				c = read(); 
  
  			do { 
  				ret = ret * 10 + c - '0'; 
  			} 
  			while ((c = read()) >= '0' && c <= '9'); 
  
  			if (c == '.') 
  			{ 
  				while ((c = read()) >= '0' && c <= '9') 
  				{ 
  					ret += (c - '0') / (div *= 10); 
  				} 
  			} 
  
  			if (neg) 
  				return -ret; 
  			return ret; 
  		} 
  
  		private void fillBuffer() throws IOException 
  		{ 
  			bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE); 
  			if (bytesRead == -1) 
  				buffer[0] = -1; 
  		} 
  
  		private byte read() throws IOException 
  		{ 
  			if (bufferPointer == bytesRead) 
  				fillBuffer(); 
  			return buffer[bufferPointer++]; 
  		} 
  
  		public void close() throws IOException 
  		{ 
  			if (din == null) 
  				return; 
  			din.close(); 
  		} 
  	}
  
  }
  