Problem: You are given a sequence b_1, b_2, …, b_n. Find the lexicographically minimal permutation a_1, a_2, …, a_{2n} such that b_i = min(a_{2i-1}, a_{2i}), or determine that it is impossible.

Input

Each test contains one or more test cases. The first line contains the number of test cases t (1 ≤ t ≤ 100).

The first line of each test case consists of one integer n — the number of elements in the sequence b (1 ≤ n ≤ 100).

The second line of each test case consists of n different integers b_1, …, b_n — elements of the sequence b (1 ≤ b_i ≤ 2n).

It is guaranteed that the sum of n by all test cases doesn't exceed 100.

Output

For each test case, if there is no appropriate permutation, print one number -1.

Otherwise, print 2n integers a_1, …, a_{2n} — required lexicographically minimal permutation of numbers from 1 to 2n.

Example

Input


5
1
1
2
4 1
3
4 1 3
4
2 3 4 5
5
1 5 7 2 8


Output


1 2 
-1
4 5 1 2 3 6 
-1
1 3 5 6 7 9 2 4 8 10 

Solution (in JAVA):

Solution:
import java.io.*;
import java.util.*;

public class QB_Jan
{
	static class Print
    {
        private final BufferedWriter bw;
        public Print()
        {
            this.bw=new BufferedWriter(new OutputStreamWriter(System.out));
        }
        public void print(Object object)throws IOException
        {
            bw.append(""+object);
        }
        public void println(Object object)throws IOException
        {
            print(object);
            bw.append("\n");
        }
        public void close()throws IOException
        {
            bw.close();
        }
    }

    static class Scan
    {
        private byte[] buf=new byte[1024*1024];
        private int index;
        private InputStream in;
        private int total;
        public Scan()
        {
            in=System.in;
        }
        public int scan()throws IOException
        {
            if(total<0)
            throw new InputMismatchException();
            if(index>=total)
            {
                index=0;
                total=in.read(buf);
                if(total<=0)
                return -1;
            }
            return buf[index++];
        }
        public int scanInt()throws IOException
        {
            int integer=0;
            int n=scan();
            while(isWhiteSpace(n))
            n=scan();
            int neg=1;
            if(n=='-')
            {
                neg=-1;
                n=scan();
            }
            while(!isWhiteSpace(n))
            {
                if(n>='0'&&n<='9')
                {
                    integer*=10;
                    integer+=n-'0';
                    n=scan();
                }
                else throw new InputMismatchException();
            }
            return neg*integer;
        }
        public double scanDouble()throws IOException
        {
            double doub=0;
            int n=scan();
            while(isWhiteSpace(n))
            n=scan();
            int neg=1;
            if(n=='-')
            {
                neg=-1;
                n=scan();
            }
            while(!isWhiteSpace(n)&&n!='.')
            {
                if(n>='0'&&n<='9')
                {
                    doub*=10;
                    doub+=n-'0';
                    n=scan();
                }
                else throw new InputMismatchException();
            }
            if(n=='.')
            {
                n=scan();
                double temp=1;
                while(!isWhiteSpace(n))
                {
                    if(n>='0'&&n<='9')
                    {
                        temp/=10;
                        doub+=(n-'0')*temp;
                        n=scan();
                    }
                    else throw new InputMismatchException();
                }
            }
            return doub*neg;
        }
        
        public long scanLong() throws IOException 
        { 
            long ret = 0; 
            long c = scan(); 
            while (c <= ' ')
            {
                c = scan(); 
            }
            
            boolean neg = (c == '-'); 
            if (neg) 
            {
                c = scan();
            }
            
            do 
            { 
                ret = ret * 10 + c - '0'; 
            } 
            while ((c = scan()) >= '0' && c <= '9');
            
            if (neg) 
            {
                return -ret; 
            }
            return ret; 
        }
        
        public String scanString()throws IOException
        {
            StringBuilder sb=new StringBuilder();
            int n=scan();
            while(isWhiteSpace(n))
            n=scan();
            while(!isWhiteSpace(n))
            {
                sb.append((char)n);
                n=scan();
            }
            return sb.toString();
        }
        private boolean isWhiteSpace(int n)
        {
            if(n==' '||n=='\n'||n=='\r'||n=='\t'||n==-1)
            return true;
            return false;
        }
    }
	public static void main(String args[]) throws Exception
	{
		Scan scan=new Scan();
		Print p=new Print();
		int T=scan.scanInt();
		loop:
		while (T-->0)
		{
			int N=scan.scanInt();
			int b[]=new int[N+1];
			HashSet<Integer> hashSet=new HashSet<Integer>();
			for(int i=1;i<=N;i++)
			{
				b[i]=scan.scanInt();
				hashSet.add(b[i]);
			}
			int a[]=new int[(2*N)+1];
			for(int i=1;i<=N;i++)
			{
				int temp=b[i]+1;
				a[2*i-1]=b[i];
				while(hashSet.contains(temp))
				{
					temp++;
				}
				if(temp>2*N)
				{
					p.println("-1");
					continue loop;
				}
				else 
				{
					hashSet.add(temp);
					a[(2*i)]=temp;
				}
			}
			for(int i=1;i<=2*N;i++)
			{
				p.print(a[i]+" ");
			}
			p.print("\n");
		}
		p.close();
	}
}