Олимпиадный тренинг

Задача . C. Большой секрет


Витя выяснил, что ответ на Главный вопрос жизни, Вселенной и всего такого заключается не в числе 54 42, а в возрастающей последовательности положительных целых чисел \(a_1, \ldots, a_n\). Чтобы не раскрывать сенсацию раньше времени, Витя зашифровал ответ, получив последовательность \(b_1, \ldots, b_n\) по следующему правилу:

Легко видеть, что исходную последовательность можно вычислить по правилу \(a_i = b_1 \oplus \ldots \oplus b_i\).

Однако, когда Витя решил представить миру свою сенсацию, он обнаружил, что числа \(b_i\) в его шифре перемешались, и после расшифровки по правилу, описанному выше, может получиться последовательность, не являющаяся возрастающей. Чтобы не ударить лицом в грязь перед научным сообществом, Витя решил найти какую-нибудь перестановку чисел \(b_i\), чтобы последовательность \(a_i = b_1 \oplus \ldots \oplus b_i\) была строго возрастающей. Помогите ему найти любую такую перестановку, либо определите, что это невозможно (и значит, в шифр вкралась какая-то дополнительная ошибка).

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

В первой строке записано одно целое число \(n\) (\(1 \leq n \leq 10^5\)).

Во второй строке через пробел записано \(n\) целых чисел \(b_1, \ldots, b_n\) (\(1 \leq b_i < 2^{60}\)).

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

Если искомой перестановки чисел не существует, выведите слово «No» в единственной строке.

В противном случае, в первой строке выведите слово «Yes», после чего во второй строке выведите числа \(b'_1, \ldots, b'_n\) — подходящую перестановку чисел \(b_i\). Неупорядоченные наборы \(\{b_1, \ldots, b_n\}\) и \(\{b'_1, \ldots, b'_n\}\) должны совпадать, то есть для каждого числа \(x\) количество вхождений \(x\) в первый набор должно быть равно количеству вхождений \(x\) во второй набор. Кроме этого, последовательность \(a_i = b'_1 \oplus \ldots \oplus b'_i\) должна быть строго возрастающей.

Примечание

В первом примере ни одна из перестановок чисел не подходит.

Во втором примере данный ответ приводит к последовательности \(a_1 = 4\), \(a_2 = 8\), \(a_3 = 15\), \(a_4 = 16\), \(a_5 = 23\), \(a_6 = 42\).


Примеры
Входные данныеВыходные данные
1 3
1 2 3
No
2 6
4 7 7 12 31 61
Yes
4 12 7 31 7 61

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя