Polycarp had an array a of 3 positive integers. He wrote out the sums of all non-empty subsequences of this array, sorted them in non-decreasing order, and got an array b of 7 integers.

For example, if a = \{1, 4, 3\}, then Polycarp wrote out 1, 4, 3, 1 + 4 = 5, 1 + 3 = 4, 4 + 3 = 7, 1 + 4 + 3 = 8. After sorting, he got an array b = \{1, 3, 4, 4, 5, 7, 8\}.

Unfortunately, Polycarp lost the array a. He only has the array b left. Help him to restore the array a.

Input

The first line contains one integer t (1 ≤ t ≤ 5000) — the number of test cases.

Each test case consists of one line which contains 7 integers b_1, b_2, ..., b_7 (1 ≤ b_i ≤ 10^9; b_i ≤ b_{i+1}). 

Additional constraint on the input: there exists at least one array a which yields this array b as described in the statement.

Output

For each test case, print 3 integers — a_1, a_2 and a_3. If there can be several answers, print any of them.

Example

Input


5
1 3 4 4 5 7 8
1 2 3 4 5 6 7
300000000 300000000 300000000 600000000 600000000 600000000 900000000
1 1 2 999999998 999999999 999999999 1000000000
1 2 2 3 3 4 5


Output


1 4 3
4 1 2
300000000 300000000 300000000
999999998 1 1
1 2 2

Note

The subsequence of the array a is a sequence that can be obtained from a by removing zero or more of its elements.

Two subsequences are considered different if index sets of elements included in them are different. That is, the values of the elements don't matter in the comparison of subsequences. In particular, any array of length 3 has exactly 7 different non-empty subsequences.
1
69696868 69696868 69696868 139393736 139393736 139393736 209090604
 2
1 1 2 69696874 69696875 69696875 69696876
1 1 1 2 2 2 3
 1
1 1 2 69696880 69696881 69696881 69696882
 2
1 1 2 69696967 69696968 69696968 69696969
1 1 1 2 2 2 3
 2
1 1 2 69696868 69696869 69696869 69696870
1 2 3 4 5 6 7
 2
1 1 2 696967 696968 696968 696969
1 1 1 2 2 2 3
 2
1 1 2 69696873 69696874 69696874 69696875
1 1 1 2 2 2 3
 2
1 1 2 69696889 69696890 69696890 69696891
1 1 1 2 2 2 3
 1
1 2 3 69696875 69696876 69696877 69696878
 2
1 1 2 69696870 69696871 69696871 69696872
1 1 1 2 2 2 3
 2
1 1 2 69696881 69696882 69696882 69696883
1 1 1 2 2 2 3
 2
1 1 2 598989 598990 598990 598991
1 3 4 4 5 7 8
 2
1 1 2 69696875 69696876 69696876 69696877
1 1 1 2 2 2 3
 1
1 1 2 69696884 69696885 69696885 69696886
 1
1 1 2 69696883 69696884 69696884 69696885
 2
1 1 2 69696885 69696886 69696886 69696887
1 1 1 2 2 2 3
 2
1 1 2 69696879 69696880 69696880 69696881
1 1 1 2 2 2 3
 5
1 3 4 4 5 7 8
1 2 3 4 5 6 7
300000000 300000000 300000000 600000000 600000000 600000000 900000000
1 1 2 999999998 999999999 999999999 1000000000
1 2 2 3 3 4 5
 2
1 1 2 69696886 69696887 69696887 69696888
1 1 1 2 2 2 3
 2
1 1 2 69696869 69696870 69696870 69696871
1 1 1 2 2 2 3
 2
1 1 2 69696887 69696888 69696888 69696889
1 1 1 2 2 2 3
 2
1 1 2 69696877 69696878 69696878 69696879
1 1 1 2 2 2 3
 2
1 1 2 69696871 69696872 69696872 69696873
1 1 1 2 2 2 3
 2
1 1 2 69696882 69696883 69696883 69696884
1 1 1 2 2 2 3
 1
1 2 3 69696887 69696888 69696889 69696890
 2
1 1 2 69696872 69696873 69696873 69696874
1 1 1 2 2 2 3
 2
1 1 2 69696878 69696879 69696879 69696880
1 1 1 2 2 2 3

69696868 69696868 69696868 
 1 1 69696874
1 1 1
 1 1 69696880
 1 1 69696967
1 1 1
 1 1 69696868
1 2 4
 1 1 696967
1 1 1
 1 1 69696873
1 1 1
 1 1 69696889
1 1 1
 1 2 69696875
 1 1 69696870
1 1 1
 1 1 69696881
1 1 1
 1 1 598989
1 3 4
 1 1 69696875
1 1 1
 1 1 69696884
 1 1 69696883
 1 1 69696885
1 1 1
 1 1 69696879
1 1 1
 1 3 4
1 2 4
300000000 300000000 300000000
1 1 999999998
1 2 2
 1 1 69696886
1 1 1
 1 1 69696869
1 1 1
 1 1 69696887
1 1 1
 1 1 69696877
1 1 1
 1 1 69696871
1 1 1
 1 1 69696882
1 1 1
 1 2 69696887
 1 1 69696872
1 1 1
 1 1 69696878
1 1 1


import java.util.*;
import java.lang.*;
import java.io.*;
import java.math.BigInteger;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
public class codeee
{		//public static int mod=1000000007;
	public static ArrayList<Long> Factors(long n)
    {
		ArrayList<Long> arr=new ArrayList<Long>();
        int k=0;
        while (n%2==0)
        {
            k++;
            n /=2;
            arr.add((long)2);
        }
	int p=(int) Math.sqrt(n); 
        for (int i = 3; i <=p; i+= 2)
        
        {  if(n==1)break;
            while (n%i == 0)
            {
                k++;
                arr.add((long)i);
                n /= i;
            }
        }
        if (n > 2)
        {
        	arr.add(n);
        }
           
        arr.add((long) 1);
   return arr;
    } 
	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') {
	                    if (cnt != 0) {
	                        break;
	                    }
	                    else {
	                        continue;
	                    }
	                }
	                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();
	        }
	 }
	 public static long gcd(long x, long p)
	    {
	        if (x == 0)
	            return p;
	         
	        return gcd(p%x, x);
	    }
	    // method to return LCM of two numbers
	    static long lcm(long a, long b)
	    {
	        return (a / gcd(a, b)) * b;
	    }
	 public static HashMap<Integer, Integer> sortByValue(HashMap<Integer, Integer> hm)
	    {
	        // Create a list from elements of HashMap
	        List<Map.Entry<Integer, Integer> > list =
	               new LinkedList<Map.Entry<Integer, Integer> >(hm.entrySet());
	 
	        // Sort the list
	        Collections.sort(list, new Comparator<Map.Entry<Integer, Integer> >() {
	            public int compare(Map.Entry<Integer, Integer> o1,
	                               Map.Entry<Integer, Integer> o2)
	            {
	                return (o1.getValue()).compareTo(o2.getValue());
	            }
	        });
	         
	        // put data from sorted list to hashmap
	        HashMap<Integer, Integer> temp = new LinkedHashMap<Integer, Integer>();
	        for (Map.Entry<Integer, Integer> aa : list) {
	            temp.put(aa.getKey(), aa.getValue());
	        }
	        return temp;
	    }
	 static int sieve =  1000000 ;


	 static boolean[] prime =  new boolean[sieve + 1] ;

	 public static void sieveOfEratosthenes() 
	     { 
	         // FALSE == prime and 1 // TRUE ==  COMPOSITE
	         
	         // time complexity = 0(NlogLogN)== o(N)
	         
	         // gives prime nos bw 1 to N // size - 1e7(at max)
	         
	         for(int i = 4; i<= sieve ; i++)
	         {
	             prime[i] = true  ; i++ ;
	            
	         }
	         
	         for(int p = 3; p*p <= sieve; p++) 
	         { 
	            if(prime[p] == false) 
	             { 
	                     for(int i = p*p; i <= sieve; i += p) 
	                     prime[i] = true; 
	             } 
	             
	             p++ ;
	         } 
	           
	     } 
	 public static void arrInpInt(int [] arr, int n) throws IOException
	 {
		 Reader reader = new Reader();
		 for(int i=0;i<n;i++)
	   		{
	   			arr[i]=reader.nextInt();	
	   		}
	 }
	 public static void arrInpLong(long [] arr, int n) throws IOException
	 {
		 Reader reader = new Reader();
		 for(int i=0;i<n;i++)
	   		{
	   			arr[i]=reader.nextLong();	
	   		}
	 }
	 public static void printArr(int[] arr)
	 {
		 for(int i=0;i<arr.length;i++)
		 {
			 System.out.print(arr[i]+" ");
		 }
		 System.out.println();
	 }
	 public static int[] decSort(int[] arr)
	 {
		  int[] arr1 = Arrays.stream(arr).boxed().sorted(Collections.reverseOrder()).mapToInt(Integer::intValue).toArray();	
		  return arr1;
	 }
	 
	
	//if present - return the first occurrence of the no
	//not present- return the index of next greater value 
	//if greater than all the values return N(taking high=N-1)
	//if smaller than all the values return 0(taking low =0)
	static int lower_bound(int arr[], int low,int high, int X)
	{

	 if (low > high) {
	     return low;
	 }
	 int mid = low + (high - low) / 2;
	 if (arr[mid] >= X) {
	     return lower_bound(arr, low,
	                        mid - 1, X);
	 }

	 return lower_bound(arr, mid + 1,
	                    high, X);
	}
	//if present - return the index of next greater value
	//not present- return the index of next greater value 
	//if greater than all the values return N(taking high=N-1)
	//if smaller than all the values return 0(taking low =0)\
	
	static int upper_bound(int arr[], int low, int high, int X)
{

if (low > high)
    return low;

int mid = low + (high - low) / 2;
if (arr[mid] <= X) {
    return upper_bound(arr, mid + 1,
                       high, X);
}

return upper_bound(arr, low,
                   mid - 1, X);
}
	
	
	 public static class Pair  {// comparator with class
		    int x;
		    int y;
		 public Pair(int x, int y)
		    {
		        this.x = x;
		        this.y = y;
		    }
		}
	
	 public static void sortbyColumn(int arr[][], int col)  // send 2d array and col no
	    {
	        Arrays.sort(arr, new Comparator<int[]>() {       
	          @Override              
	          public int compare(final int[] entry1, 
	                             final int[] entry2) {
	            if (entry1[col] > entry2[col])
	                return 1;
	            else if (entry1[col] < entry2[col])
	                return -1;
	              else return 0;
	          }
	        });
	    }
	 public static void sortbyColumn1(int arr[][], int col)  // send 2d array and col no
	    {
	        Arrays.sort(arr, new Comparator<int[]>() {       
	          @Override              
	          public int compare(final int[] entry1, 
	                             final int[] entry2) {
	            if (entry1[col] > entry2[col])
	                return 1;
	            else if (entry1[col] < entry2[col])
	                return -1;
	            else if(entry1[col] == entry2[col])
	            {
	            	if(entry1[col-1]>entry2[col-1])
	            		return -1;
	            	else if(entry1[col-1]<entry2[col-1])
	            		return 1;
	            	else return 0;
	            }
	              else return 0;
	          }
	        });
	    }
	 public static void print2D(int mat[][])
	    {
	        // Loop through all rows
	        for (int i = 0; i < mat.length; i++)
	 
	        {  // Loop through all elements of current row
	        {
	            for (int j = 0; j < mat[i].length; j++)
	                System.out.print(mat[i][j] + " ");
	        }
	            System.out.println();
	        }
	    }
	 public static int biggestFactor(int num) {
		  int  result = 1;
		  for(int  i=2; i*i <=num; i++){
		      if(num%i==0){
		          result = num/i;
		          break;
		      }
		  }
		  return result;
		}
	    public static class  p
	     {
	    	 int no;
	    	 int h;
	    	 public p(int no, long h)
	    	 {
	    		 this.no=no;
	    		 this.h=(int) h;
	    	 }
	     }
	    public static class  k
	     {
	    	 boolean inc;
	    	 int min;
	    	 int max;
	    	 public k(boolean inc,int min, int max)
	    	 {
	    		 this.inc=inc;
	    		 this.min=min;
	    		 this.max=max;
	    	 }
	     }
	    
	  static    class com implements Comparator<p>{
	            public int compare(p s1, p s2) {
	                if (s1.h > s2.h)
	                    return -1;
	                else if (s1.h < s2.h)
	                    return 1;
	                else if(s1.h==s2.h)
	                {
	                	if(s1.no>s2.no)return -1;
	                	else return 1;
	                }
	                                return 0;
	                }
	        }
	  static long hcf(long a,long b)
	  {
	    while (b > 0)
	    {
	        long temp = b;
	        b = a % b; 
	        a = temp;
	    }
	    return a;
	   }
	  
	 static int lower_bound_arr(ArrayList<Integer> arr, int low,
	             int high, int X)
	{

	 if (low > high) {
	     return low;
	 }
	 int mid = low + (high - low) / 2;
	 if (arr.get(mid) >= X) {
	     return lower_bound_arr(arr, low,
	                        mid - 1, X);
	 }

	 return lower_bound_arr(arr, mid + 1,
	                    high, X);
	}
	
	 
 	public static void main(String args[]) throws NumberFormatException, IOException ,java.lang.Exception
	{
		
		Reader reader = new Reader();
 	
			
		//sieveOfEratosthenes();
		//System.out.println(prime[0]+" "+prime[1]+" "+prime[2]+" "+prime[3]+" "+prime[4]);
		//Scanner reader=new Scanner(System.in);
		
//	BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//		int cases=Integer.parseInt(br.readLine());
//		int cases=1;
	//BufferedWriter output = new BufferedWriter(new OutputStreamWriter(System.out));
		int cases=reader.nextInt();
		
   	while (cases-->0){
   		
   		//long V=reader.nextLong();
   		//long C=reader.nextLong();
   		//long N=reader.nextLong();
   		//long M=reader.nextLong();
   		
//   		int N=reader.nextInt();
//   		int P=reader.nextInt();
//   		int K=reader.nextInt();
   		//int1 G=reader.nextInt();
   		//int B=reader.nextInt();
   		//BufferedWriter output = new BufferedWriter(new OutputStreamWriter(System.out));
   		// int P=reader.nextInt();
   		//int[][] arr=new int[N][N];
   		//int K=reader.nextInt();
   		//int X=reader.nextInt();
   		//int K=reader.nextInt();
   		//int S=reader.nextInt();
   		//int circum=reader.nextInt();
   		//int K=reader.nextInt();
//   		String[] firs=br.readLine().split(" ");
//     	int N=Integer.parseInt(firs[0]);
   		//char p=first[1].charAt(0);
   		//int P=Integer.parseInt(first[1]);
   		//int K=Integer.parseInt(first[2]);
   		//String[] first=br.readLine().split(" ");
   		//int N=Integer.parseInt(first[0]);
   		//int K=Integer.parseInt(first[1]);
   		//int X=reader.nextInt();
   		//int Y=reader.nextInt();
//   		String s2=br.readLine();
//   		String s3=br.readLine();
//   		char[]  s11=s2.toCharArray();
//	    char[]  s12=new char[s11.length];
   		
   		//String[] first1=br.readLine().split(" ");
   		//int C=Integer.parseInt(first1[0]);
   		//int C1=Integer.parseInt(first1[1]);
   		//char[]  s12=s3.toCharArray();
    	//int max=Integer.MIN_VALUE;
   		//int min=Integer.MAX_VALUE;
   		//int ind=-1;
 
//   		HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
//   		HashMap<String,Integer> map1=new HashMap<String,Integer>();
   		//HashMap<Character,Integer> path=new HashMap<Character,Integer>();
   		//TreeMap<Integer,Integer> map=new TreeMap<Integer,Integer>(Collections.reverseOrder());
  		//HashSet<Long> left =new HashSet<Long>();
//   		HashSet<Integer> right =new HashSet<Integer>();
   		//TreeSet<Integer> a =new TreeSet<Integer>();
   		//TreeSet<Long> b =new TreeSet<Long>();
   		//TreeSet<Integer> map=new TreeSet<Integer>();
//   		long[] arr=new long[(int) V];
//   		long[] arr1=new long[(int) V];
//   		long[] arr2=new long[(int) V];
//   		Integer[] arr=new Integer[V];
   		int[] arr1=new int[7];
//   		int[] arr2=new int[P];
//   		int[] diff=new int[N];
//   		int[] arr1= {2,3,5,7,11,13,17,19,23,29,31};
//   		Integer[] arr1=new Integer[N];
   	//ArrayList<Integer> list=new ArrayList<Integer>();	
   		
   		//boolean[]arr1=new boolean[N];
   for(int i=0;i<7;i++)
   {arr1[i]=reader.nextInt();
   }
   System.out.println(arr1[0]+" "+arr1[1]+" "+(arr1[6]-(arr1[0]+arr1[1])));
   	System.out.println();
 }	
	}  	
}
   	