Problem: You are given three positive (i.e. strictly greater than zero) integers x, y and z.

Your task is to find positive integers a, b and c such that x = max(a, b), y = max(a, c) and z = max(b, c), or determine that it is impossible to find such a, b and c.

You have to answer t independent test cases. Print required a, b and c in any (arbitrary) order.

Input

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

The only line of the test case contains three integers x, y, and z (1 ≤ x, y, z ≤ 10^9).

Output

For each test case, print the answer:

  * "NO" in the only line of the output if a solution doesn't exist; 
  * or "YES" in the first line and any valid triple of positive integers a, b and c (1 ≤ a, b, c ≤ 10^9) in the second line. You can print a, b and c in any order. 

Example

Input


5
3 2 3
100 100 100
50 49 49
10 30 20
1 1000000000 1000000000


Output


YES
3 2 1
YES
100 100 100
NO
NO
YES
1 1 1000000000

Solution (in JAVA):

Solution:
import java.util.*;
import java.io.*;
public class Main {
///////----------------input----------------//////
	static BufferedReader br= new BufferedReader(new
            InputStreamReader(System.in)); 
	static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	static StringTokenizer st; 
	static byte[] buffer =new byte[10*1024];
	static int index;
    static InputStream input_stream= System.in;
    static int total;
	
	static String ns() throws IOException
    { 
		 StringBuilder sb = new StringBuilder();
         int n = read();
         while (isWhiteSpace(n))
             n = read();
         while (!isWhiteSpace(n)) {
             sb.append((char)n);
             n = read();
         }
         return sb.toString();
    } 
	
	static int read() throws IOException
	{
		if(total<0)
            throw new InputMismatchException();
        if(index>=total) {
            index=0;
            total= input_stream.read(buffer);
            if(total<=0)
                return -1;
        }
        return buffer[index++];
	}
	static int ni() throws IOException
    { 
		int integer=0;
        int n= read();
        while(isWhiteSpace(n))
            n= read();
        int neg=1;
        if(n=='-') {
            neg=-1;
            n= read();
        }
        while(!isWhiteSpace(n)) {
            if(n>='0'&&n<='9') {
                integer*=10;
                integer+=n-'0';
                n= read();
            }
            else throw new InputMismatchException();
        }
        return neg*integer;
    } 

	static long nl() throws IOException
    { 
		long number=0;
        int n= read();
        while(isWhiteSpace(n))
            n= read();
        long neg=1l;
        if(n=='-') {
            neg=-1l;
            n= read();
        }
        while(!isWhiteSpace(n)) {
            if(n>='0'&&n<='9') {
                number*=10l;
                number+=(long)(n-'0');
                n= read();
            }
            else throw new InputMismatchException();
        }
        return neg*number;
    } 

	static double nd() throws IOException
    { 
		double doub=0;
        int n= read();
        while(isWhiteSpace(n))
            n= read();
        int neg=1;
        if(n=='-') {
            neg=-1;
            n= read();
        }
        while(!isWhiteSpace(n)&&n!='.') {
            if(n>='0'&&n<='9') {
                doub*=10;
                doub+=n-'0';
                n= read();
            }
            else throw new InputMismatchException();
        }

        if(n=='.') {
            n= read();
            double temp=1;
            while(!isWhiteSpace(n)) {
                if(n>='0'&&n<='9') {
                    temp/=10;
                    doub+=(n-'0')*temp;
                    n= read();
                }
                else throw new InputMismatchException();
            }
        }
        return doub*neg;
    } 

	static String nsl() throws IOException
    { 
        String str = ""; 
        try
        { 
            str = br.readLine(); 
        } 
        catch (IOException e) 
        { 
            e.printStackTrace(); 
        } 
        return str; 
    }
	static boolean isWhiteSpace(int n) {
        if(n==' '|| n=='\n'|| n=='\r'|| n=='\t'|| n==-1)
            return true;
        return false;
    }
	
	///////-------------output-----------------//////
	static public void p(String str) throws IOException {
        bw.append(str);
    }
	static public void pn(String str) throws IOException {
        p(str);
        bw.append("\n");
    }
	static public void close()throws IOException {
        bw.close();
    }
	static public void flush()throws IOException {
        bw.flush();
    }
	
	///////----------THE FAST I/O METHODS ENDS HERE -----------/////////////
	static class Node{
		int h;
		int w;
		Node(int h,int w)
		{
			this.h=h;
			this.w=w;
		}
	}
	static int bit_score(int n)  {
		  int a, b, c, largest, smallest;
		  int score;

		  a = n%10;  n/=10;
		  
		  b = n%10;  n/=10;
		  c = n%10;  n/=10;

		  largest = (a>b)?a:b;
		  largest = (c>largest)?c:largest;
		  smallest = (a<b)?a:b;
		  smallest = (c<smallest)?c:smallest;

		  score = largest*11 + smallest*7;

		  score = score % 100;
		  return score;
		}
	static int findPairs (int score_array[], int N)  {
		  int sig_dig[]=new int[100];
		  int i, pairs = 0, msb;

		  for(i=0; i<10; i++)  {
		    sig_dig[i] = 0;
		  }

		  for(i=0; i<N; i=i+2)  {
		    msb = score_array[i] / 10;
		        for(int j =i+2; j<N; j=j+2){
		            if(msb == score_array[j]/10){
		                if(sig_dig[msb] < 2)  {
		              sig_dig[msb]++;
		            }
		            }
		        }
		    
		  }
		    
		    for(i=1; i<N; i=i+2)  {
		    msb = score_array[i] / 10;
		    for(int j =i+2; j<N; j=j+2){
		            if(msb == score_array[j]/10){
		                if(sig_dig[msb] < 2)  {
		              sig_dig[msb]++;
		            }
		            }
		        }
		  }

		  for(i=0; i<10; i++)  {
		    pairs = pairs + sig_dig[i];
		  }

		  return pairs;
		}

	public static void main(String[] args)throws IOException {
  
		int t=ni();
		while(t-->0)
		{
			int x = ni(); // a,b
            int y = ni(); // a,c
            int z = ni(); // b,c
            int a,b,c;
            a = b = c = -1;
            String res = "YES";
            if (x==y) {
                a = x;
                if (a<z) {
                    res = "NO";
                } else {
                    b = c = z;
                }
            } else if (y==z) {
                c = y;
                if (c<x) {
                    res = "NO";
                } else {
                    a = b = x;
                }
            } else if (x==z) {
                b = x;
                if (b<y) {
                    res = "NO";
                } else {
                    a = c = y;
                }
            } else {
                res = "NO";
            }
            if (res.equals("YES")) {
                pn(res);
                pn(a + " " + b + " " + c);
            } else {
                pn(res);
            }
		}
		flush();
    }

}