D. Двоичные пауки
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

На Марсе обитает необычный вид пауков — Двоичные пауки. Они плетут паутину, чтобы защищаться от врагов.

Чтобы сплести паутину, пауки объединяются в пары. При этом, если у первого паука в паре $$$x$$$ лапок, а у второго — $$$y$$$ лапок, то у них выходит паутина прочностью $$$x \oplus y$$$. Здесь $$$\oplus$$$ обозначает операцию побитового исключающего ИЛИ.

Двоичные пауки живут большими группами. Сейчас Вы наблюдаете за группой из $$$n$$$ пауков, причем $$$i$$$-й паук имеет $$$a_i$$$ лапок.

Когда группе пауков грозит опасность, то некоторые из них становятся защитниками. Защитники выбираются следующим образом. Во-первых, должно быть как минимум два паука-защитника. Во-вторых, любая пара из пауков-защитников должна уметь сплести паутину прочностью хотя бы $$$k$$$. В-третьих, защитников должно быть как можно больше.

Ученые долго исследовали поведение Двоичных пауков и выдвинули гипотезу, что они всегда могут выбрать защитников оптимальным образом, удовлетворяя при этом условиям выше. Вам предстоит проверить эту гипотезу на группе пауков. Для этого надо понять, сколько пауков должны стать защитниками. А поскольку Вы не являетесь Двоичным пауком, то Вы решили прибегнуть к помощи компьютера и написать программу, которая решает эту непростую задачу.

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

В первой строке входных данных находится два целых числа $$$n$$$ и $$$k$$$ ($$$2 \le n \le 3\cdot10^5$$$, $$$0 \le k \le 2^{30} - 1$$$) — количество пауков в группе и минимальная допустимая прочность паутины.

Во второй строке входных данных находится $$$n$$$ целых чисел $$$a_i$$$ ($$$0 \le a_i \le 2^{30}-1$$$) — количество лапок у $$$i$$$-го паука.

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

В первой строке выведите целое число $$$\ell$$$ ($$$2 \le \ell \le n$$$) — максимально возможное количество пауков-защитников.

Во второй строке выведите через пробел $$$\ell$$$ различных целых чисел $$$b_i$$$ ($$$1 \le b_i \le n$$$) — номера пауков, которые станут защитниками.

Если существует несколько способов выбрать защитников, то выведите любой из них.

Увы, может получиться и так, что собрать защитников невозможно. В таком случае требуется вывести единственное число $$$-1$$$.

Примеры
Входные данные
6 8
2 8 4 16 10 14
Выходные данные
3
1 5 4
Входные данные
6 1024
1 2 3 1 4 0
Выходные данные
-1
Примечание

Рассмотрим пример из условия.

В первом примере группа пауков выглядит следующим образом:

Возьмем трех пауков: с двумя, десятью и $$$16$$$-ю лапками. Тогда нетрудно видеть, что каждая пара сможет сплести достаточно прочную паутину, т. к. $$$2 \oplus 10 = 8 \ge 8$$$, $$$2 \oplus 16 = 18 \ge 8$$$ и $$$10 \oplus 16 = 26 \ge 8$$$.

Данный вариант выбора не единственный: можно, к примеру, выбрать трех пауков с номерами $$$3$$$, $$$4$$$ и $$$6$$$.

Во втором примере никакая пара пауков не сможет сплести паутину прочностью $$$1024$$$ или больше, поэтому ответ $$$-1$$$.