A. Избегая ноля
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вам дан массив из $$$n$$$ целых чисел $$$a_1,a_2,\dots,a_n$$$.

Вы должны создать массив из $$$n$$$ целых чисел $$$b_1,b_2,\dots,b_n$$$ такой, что:

  • Массив $$$b$$$  — это перестановка массива $$$a$$$, т.е. он содержит одни и те же значения, и каждое из них встречается одинаковое количество раз в этих массивах. Другими словами, мультимножества $$$\{a_1,a_2,\dots,a_n\}$$$ и $$$\{b_1,b_2,\dots,b_n\}$$$ должны быть равны.

    Например, если $$$a=[1,-1,0,1]$$$, то $$$b=[-1,1,1,0]$$$ и $$$b=[0,1,-1,1]$$$  — это перестановки $$$a$$$, но $$$b=[1,-1,-1,0]$$$ и $$$b=[1,0,2,-3]$$$  — это не перестановки $$$a$$$.

  • Для всех $$$k=1,2,\dots,n$$$ сумма первых $$$k$$$ элементов $$$b$$$ не равна нулю. Формально, для всех $$$k=1,2,\dots,n$$$ должно выполняться $$$$$$b_1+b_2+\cdots+b_k\not=0\,.$$$$$$

Если массив $$$b_1,b_2,\dots, b_n$$$ с необходимыми свойствами не существует, необходимо вывести NO.

Входные данные

Каждый тест содержит несколько наборов входных данных. В первой строке содержится целое число $$$t$$$ ($$$1\le t \le 1000$$$)  — количество наборов входных данных. Описание наборов входных данных приведено ниже.

Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$1\le n\le 50$$$)  — длину массива $$$a$$$.

Вторая строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$a_1,a_2,\dots, a_n$$$ ($$$-50\le a_i\le 50$$$)  — элементы массива $$$a$$$.

Выходные данные

Для каждого набора входных данных, если не существует массива $$$b_1,b_2,\dots,b_n$$$ с требуемыми свойствами, выведите одну строку со словом NO.

В противном случае выведите строку со словом YES, а затем строку с $$$n$$$ целыми числами $$$b_1,b_2,\dots,b_n$$$.

Если существует более одного массива $$$b_1,b_2,\dots,b_n$$$, удовлетворяющего требуемым свойствам, то можно вывести любой из них.

Пример
Входные данные
4
4
1 -2 3 -4
3
0 0 0
5
1 -1 1 -1 1
6
40 -31 -9 0 13 -40
Выходные данные
YES
1 -2 3 -4
NO
YES
1 1 -1 1 -1
YES
-40 13 40 0 -9 -31
Примечание

Пояснение первого набора входных данных: Массив с нужными свойствами равен $$$b=[1,-2,3,-4]$$$. Для этого массива все выполняется:

  • Первый элемент $$$b$$$ равен $$$1$$$.
  • Сумма первых двух элементов $$$b$$$ равна $$$-1$$$.
  • Сумма первых трех элементов $$$b$$$ равна $$$2$$$.
  • Сумма первых четырех элементов $$$b$$$ равна $$$-2$$$.

Пояснение второго набора входных данных: Поскольку все значения в $$$a$$$ равны $$$0$$$, любая перестановка $$$b$$$ массива $$$a$$$ будет иметь все элементы, равные $$$0$$$, и поэтому для нее явно не сможет быть выполнено второе свойство из условия (например, потому что $$$b_1=0$$$). Следовательно, в данном случае ответом будет NO.

Пояснение третьего набора входных данных:. Массив с нужными свойствами равен $$$b=[1, 1, -1, 1, -1]$$$. Для этого массива все выполняется:

  • Первый элемент $$$b$$$ равен $$$1$$$.
  • Сумма первых двух элементов $$$b$$$ равна $$$2$$$.
  • Сумма первых трех элементов $$$b$$$ равна $$$1$$$.
  • Сумма первых четырех элементов $$$b$$$ равна $$$2$$$.
  • Сумма первых пяти элементов $$$b$$$ равна $$$1$$$.

Пояснение четвертого набора входных данных: Массив с нужными свойствами равен $$$b=[-40,13,40,0,-9,-31]$$$. Для этого массива все выполняется:

  • Первый элемент $$$b$$$ равен $$$-40$$$.
  • Сумма первых двух элементов $$$b$$$ равна $$$-27$$$.
  • Сумма первых трех элементов $$$b$$$ равна $$$13$$$.
  • Сумма первых четырех элементов $$$b$$$ равна $$$13$$$.
  • Сумма первых пяти элементов $$$b$$$ равна $$$4$$$.
  • Сумма первых шести элементов $$$b$$$ равна $$$-27$$$.