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

Куро только что узнал о перестановках и этого его вдохновило придумать новый вид перестановок. Он выбрал $$$n$$$ различных целых положительных чисел и сделал из них множество $$$S$$$. Теперь он определяет волшебную перестановку следующим образом:

  • Это перестановка всех целых чисел от $$$0$$$ до $$$2^x - 1$$$, где $$$x$$$ это какое-то неотрицательное целое число.
  • Побитовое исключающее или любых двух соседних элементов перестановки лежит в множестве $$$S$$$.

Так как Куро очень восхищённо относится к волшебным перестановкам, то он хочет создать самую длинную возможную волшебную перестановку. Иначе говоря, он хочет найти такое наибольшее неотрицательное целое число $$$x$$$, что существует волшебная перестановка целых чисел от $$$0$$$ до $$$2^x - 1$$$. Поскольку он немного новичок в вопросе перестановок, он хочет чтобы вы ему помогли и нашли это $$$x$$$, а также волшебную перестановку для этого $$$x$$$.

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

Первая строка содержит одно целое число $$$n$$$ ($$$1 \leq n \leq 2 \cdot 10^5$$$) — количество элементов в множестве $$$S$$$.

Вторая строка содержит $$$n$$$ различных целых чисел $$$S_1, S_2, \ldots, S_n$$$ ($$$1 \leq S_i \leq 2 \cdot 10^5$$$) — элементы множества $$$S$$$.

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

В первой строке выведите наибольшее неотрицательное целое число $$$x$$$, такое что существует волшебная перестановка чисел от $$$0$$$ до $$$2^x - 1$$$.

Затем выведите $$$2^x$$$ целых чисел задающую волшебную перестановку чисел от $$$0$$$ до $$$2^x - 1$$$. В случае если существует несколько таких волшебных перестановок, выведите любую из них.

Примеры
Входные данные
3
1 2 3
Выходные данные
2
0 1 3 2 
Входные данные
2
2 3
Выходные данные
2
0 2 1 3 
Входные данные
4
1 2 3 4
Выходные данные
3
0 1 3 2 6 7 5 4 
Входные данные
2
2 4
Выходные данные
0
0 
Входные данные
1
20
Выходные данные
0
0 
Входные данные
1
1
Выходные данные
1
0 1 
Примечание

В первом примере $$$0, 1, 3, 2$$$ образует волшебную перестановку так как:

  • $$$0 \oplus 1 = 1 \in S$$$
  • $$$1 \oplus 3 = 2 \in S$$$
  • $$$3 \oplus 2 = 1 \in S$$$

Где $$$\oplus$$$ обозначает операцию побитового исключающего ИЛИ.