for _ in range(int(input())): n, *caps = map(int, input().split()) *pcaps, = enumerate(caps) pcaps.sort(key=lambda s: s[1]) (pA, A), (pB, B), (pC, C) = pcaps *nums, = map(int, input().split()) nums.sort() assert len(nums) == n #print("new test: ", n, A, B, C, nums) TOTAL = sum(nums) HALF = (TOTAL + 1) // 2 #print(TOTAL, HALF, nums[-1]) fail = False sA = sum(nums[-A:]) lA = 0 while sA >= HALF: sA -= nums[-(A - lA)] sA += nums[lA] lA += 1 if lA == A: fail = True break if fail: print("NO") continue toA = nums[:lA] + nums[-(A - lA):] nums = nums[lA : -(A - lA)] #print(f"A {lA=}:", sA, toA, nums) sB = sum(nums[-B:]) lB = 0 while sB >= HALF: sB -= nums[-(B - lB)] sB += nums[lB] lB += 1 if lB == B: fail = True break if fail: print("NO") continue toB = nums[:lB] + nums[-(B - lB):] nums = nums[lB : -(B - lB)] #print("B:", sB, toB, nums) sC = sum(nums) toC = nums #print("C:", sC, toC, nums) if sC >= HALF: print("NO") continue assert TOTAL == sA + sB + sC assert len(toA) == A assert len(toB) == B assert len(toC) == C result = [None, None, None] result[pA] = toA result[pB] = toB result[pC] = toC print("YES") for res in result: print(*res)