Problem: Permutation p is a sequence of integers p=[p_1, p_2, ..., p_n], consisting of n distinct (unique) positive integers between 1 and n, inclusive. For example, the following sequences are permutations: [3, 4, 1, 2], [1], [1, 2]. The following sequences are not permutations: [0], [1, 2, 1], [2, 3], [0, 1, 2].

The important key is in the locked box that you need to open. To open the box you need to enter secret code. Secret code is a permutation p of length n. 

You don't know this permutation, you only know the array q of prefix maximums of this permutation. Formally:

  * q_1=p_1, 
  * q_2=max(p_1, p_2), 
  * q_3=max(p_1, p_2,p_3), 
  * ... 
  * q_n=max(p_1, p_2,...,p_n). 



You want to construct any possible suitable permutation (i.e. any such permutation, that calculated q for this permutation is equal to the given array).

Input

The first line contains integer number t (1 ≤ t ≤ 10^4) — the number of test cases in the input. Then t test cases follow.

The first line of a test case contains one integer n (1 ≤ n ≤ 10^{5}) — the number of elements in the secret code permutation p.

The second line of a test case contains n integers q_1, q_2, ..., q_n (1 ≤ q_i ≤ n) — elements of the array q for secret permutation. It is guaranteed that q_i ≤ q_{i+1} for all i (1 ≤ i < n).

The sum of all values n over all the test cases in the input doesn't exceed 10^5.

Output

For each test case, print:

  * If it's impossible to find such a permutation p, print "-1" (without quotes). 
  * Otherwise, print n distinct integers p_1, p_2, ..., p_n (1 ≤ p_i ≤ n). If there are multiple possible answers, you can print any of them. 

Example

Input


4
5
1 3 4 5 5
4
1 1 3 4
2
2 2
1
1


Output


1 3 4 5 2 
-1
2 1 
1 

Note

In the first test case of the example answer [1,3,4,5,2] is the only possible answer:

  * q_{1} = p_{1} = 1; 
  * q_{2} = max(p_{1}, p_{2}) = 3; 
  * q_{3} = max(p_{1}, p_{2}, p_{3}) = 4; 
  * q_{4} = max(p_{1}, p_{2}, p_{3}, p_{4}) = 5; 
  * q_{5} = max(p_{1}, p_{2}, p_{3}, p_{4}, p_{5}) = 5. 



It can be proved that there are no answers for the second test case of the example.

Solution (in JAVA):

Solution:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.TreeSet;
 
public class myFile
{
	public static void main(String args[])
	{
	   Scanner sc = new Scanner(System.in); 
	   int query = sc.nextInt();
	   int x,i,n,u;
	   boolean ans;
	   List<Integer> arrList = new ArrayList<Integer>();
	   List<Integer> ansList = new ArrayList<Integer>();
	   TreeSet<Integer> queue = new TreeSet<Integer>();
	   TreeSet<Integer> set = new TreeSet<Integer>();
	   while(query>0 && sc.hasNextInt())
	   {
		   ans=true;
		   query--;
		   set.clear();
		   arrList.clear();
		   ansList.clear();
		   queue.clear();
		   n  = sc.nextInt();
		   for(i=1;i<=n;i++)queue.add(i);
		   for(i=0;i<n;i++)
		   {
			 x = sc.nextInt();
			 arrList.add(x);
			 queue.remove(x);
			 if(i>0 && arrList.get(i).intValue()==arrList.get(i-1).intValue() && ans)
			 {
				 u = queue.pollFirst();
				 if(u<arrList.get(i))
				 {
					 set.add(u);
					 ansList.add(u); 
				 }
				 else
					 ans=false;
			 }
			 else
			 {
				set.add(x);
		   	    ansList.add(x);
			 }
		   }
		   if(ansList.size()<n)
			   System.out.println("-1");
		   else
		   {
			   System.out.print(ansList.get(0));
			   for(i=1;i<ansList.size();i++)
			   {
				   System.out.print(" "+ansList.get(i));
			   }System.out.println();
		   }
		   
	   }
	   
	}
	
	   
}