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 PYTHON3):

Solution:
#_________________ Mukul Mohan Varshney _______________#

#Template
import sys
import os
import math
import copy
from math import gcd
from bisect import bisect
from io import BytesIO, IOBase
from math import sqrt,floor,factorial,gcd,log,ceil
from collections import deque,Counter,defaultdict
from itertools import permutations, combinations

#define function 
def Int(): return int(sys.stdin.readline())
def Mint(): return map(int,sys.stdin.readline().split())
def Lstr(): return list(sys.stdin.readline().strip())
def Str(): return sys.stdin.readline().strip()
def Mstr(): return map(str,sys.stdin.readline().strip().split())
def List(): return list(map(int,sys.stdin.readline().split()))
def Hash(): return dict()
def Mod(): return 1000000007
def Ncr(n,r,p): return ((fact[n])*((ifact[r]*ifact[n-r])%p))%p
def Most_frequent(list): return max(set(list), key = list.count)
def Mat2x2(n): return [List() for _ in range(n)]

def Prime_factors(n):
     i = 2
     factors = set()
     while i * i <= n:
          if n % i:
               i += 1
          else:
               n //= i
               factors.add(i)
     if n > 1:
          factors.add(n)
     print(factors)     
     if len(factors)==2:
          return True
     else:
          return False

def Divisors(n) : 
     l = []  
     for i in range(1, int(math.sqrt(n) + 1)) :
          if (n % i == 0) : 
               if (n // i == i) : 
                    l.append(i) 
               else : 
                    l.append(i)
                    l.append(n//i)
     return l
     
def Sieve(n):                      
     prime=[True for i in range(n+1)]
     lst=[]
     p=2
     while p*p<=n:
          if prime[p]:
               for i in range(p*p,n+1,p):
                    prime[i]=False
          p=p+1
     for i in range(2,n+1):
          if prime[i]:
               lst.append(i)
     return lst    
     
def minimum_integer_not_in_list(a):
     b=max(a)
     if(b<1):
          return 1
          
     A=set(a)
     B=set(range(1,b+1))
     D=B-A
     if len(D)==0:
          return b+1
     else:
          return min(D)
 
# Driver Code 	
def solution():
     for i in range(Int()):
          a=List()
          m=max(a)
          c=0
          for i in range(len(a)):
               if(a[i]==m):
                    c+=1
                    
          if(c>=2):
               print("YES")
               print(max(a),min(a),min(a))
          else:
               print("NO")

#Call the solve function          
if __name__ == "__main__":
     solution()