Данина#9100

Данина

3 секунди
128 мегабайтів
Середня

Син Неба, наш улюблений Імператор, наказав вам, своєму першому міністру, зібрати данину з сусідніх королівств. Кожному з них було призначено данину в срібних монетах — королівство під номером має сплатити a_i.

Однак, щоб продемонструвати свою безмежну милість, Імператор вирішив зібрати данину лише з деяких з цих королівств, звільняючи інших. Ваш надмірно старанний Міністр фінансів, записавши всі значення a_i, попередньо обчислив усі можливі суми данини з непорожніх підмножин — в результаті отрималось рівно 2^n - 1 таких сум.

На жаль, під час своєї роботи міністр загубив листок із початковими значеннями данини. За таку грубу недбалість, а також за нерозбірливий почерк, його було негайно страчено.

Тепер у вас є лише список з 2^n - 1 сум, записаних в досить недбалий спосіб. Чи зможете ви відновити початкові значення a_i з цих сум?

Вхідні дані

У першому рядку міститься одне ціле число z~(1 \le z \le 200) — кількість тестових випадків.

Описання тестових випадків слідують далі.

Кожен тест складається з двох рядків:

  • Перший рядок містить ціле число n~(1 \le n \le 20).

  • Другий рядок містить 2^n - 1 цілих чисел, кожне з яких не перевищує 2 \cdot 10^9, і представляє всі можливі суми непорожніх підмножин мультисету значень a_i.

Гарантується, що всі значення a_i є додатними цілими числами.

Загальна кількість чисел у всіх тестових випадках не перевищує 10^7.

Вихідні дані

Для кожного тестового випадку виведіть відновлені значення a_i~(i = 1 .. n) у порядку зростання.

Якщо відновлення неможливе або якщо існує більше одного можливого дійсного набору значень, виведіть рядок "NO" — зрештою, не можна страчувати одного й того ж міністра двічі.

Приклади

Приклад 1

Loading
Loading