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 \le t \le 2 \cdot 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 \le x, y, z \le 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 \le a, b, c \le 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
[{"code": "for _ in range(int(input())):\n    a = sorted(list(map(int, input().split())))\n    if (a[1] != a[2]):\n        print(\"NO\")\n    else:\n        print(\"YES\")\n        print(a[0], a[0], a[2])\n\n", "passed": true, "time": 0.14, "memory": 14200.0, "status": "done"}, {"code": "import sys\n#q=1\nq=int(input())\nfor i in range(q):\n    #n,m=[int(j) for j in sys.stdin.readline().split()]\n    #n=int(sys.stdin.readline())\n    a=[int(j) for j in sys.stdin.readline().split()]\n    a.sort()\n    if a[1]==a[2]:\n        print('YES')\n        print(a[0],a[0],a[2])\n    else:\n        print('NO')", "passed": true, "time": 0.14, "memory": 14152.0, "status": "done"}, {"code": "import math as mt \nimport sys,string\ninput=sys.stdin.readline\nL=lambda : list(map(int,input().split()))\nLs=lambda : list(input().split())\nM=lambda : list(map(int,input().split()))\nI=lambda :int(input())\nfrom collections import defaultdict\n\n\n\nt=I()\nfor i in range(t):\n    x,y,z=M()\n    d=[x,y,z]\n    p=max(x,y,z)\n    c=0\n    for j in d:\n        if(j==p):\n            c+=1\n    if(c>=2):\n        print(\"YES\")\n        if(c==2):\n            print(min(x,y,z),min(x,y,z),p)\n        else:\n            print(p,p,p)\n    else:\n        print(\"NO\")\n", "passed": true, "time": 0.14, "memory": 14400.0, "status": "done"}, {"code": "for u in range(int(input())):\n    x, y, z = map(int, input().split())\n    \n    t = max(x, y, z)\n    ans = 0\n    if t == x:\n        ans += 1\n    if t ==y:\n        ans += 1\n    if t == z:\n        ans += 1\n    \n    if ans >=2:\n        print(\"YES\")\n        print(min(x,y,z), min(x, y, z), t)\n    else:\n        print('NO')", "passed": true, "time": 0.19, "memory": 14216.0, "status": "done"}, {"code": "def solve(x, y, z):\n    x, y, z = sorted([x, y, z])\n    if x == y == z:\n        return [x, x, x]\n    elif x < y and y == z:\n        return [x, x, z]\n    return None\n\nt = int(input())\nfor _ in range(t):\n    # n = int(input())\n    x, y, z = map(int, input().split())\n    # c = list(map(int, input().split()))\n    sol = solve(x, y, z)\n    if sol:\n        print('YES')\n        print(' '.join(map(str, sol)))\n    else:\n        print('NO')", "passed": true, "time": 0.14, "memory": 14260.0, "status": "done"}, {"code": "import sys\n\ndef minp():\n\treturn sys.stdin.readline().strip()\n\ndef mint():\n\treturn int(minp())\n\ndef mints():\n\treturn list(map(int, minp().split()))\n\ndef solve():\n\ta = list(mints())\n\ta.sort()\n\tif a[-1] != a[-2]:\n\t\tprint(\"NO\")\n\t\treturn\n\telse:\n\t\tprint(\"YES\")\n\t\tprint(a[0],a[0],a[1])\n\nfor i in range(mint()):\n\tsolve()\n", "passed": true, "time": 0.14, "memory": 14084.0, "status": "done"}, {"code": "for _ in range(int(input())):\n    l = list(map(int,input().split()))\n    l.sort()\n    if l[1]==l[2]:\n        print(\"YES\")\n        print(l[0],l[0],l[2])\n    else:\n        print(\"NO\")", "passed": true, "time": 0.14, "memory": 14080.0, "status": "done"}]