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

Задача . H. Следи за малостью XOR


Вам дан массив целых чисел \(a_1, a_2, \ldots, a_n\) и целое число \(x\).

Найдите количество непустых подмножеств индексов этого массива \(1 \leq b_1 < b_2 < \ldots < b_k \leq n\) таких, что для всех пар \((i, j)\), где \(1 \leq i < j \leq k\), выполняется неравенство \(a_{b_i} \oplus a_{b_j} \leq x\). Здесь \(\oplus\) обозначает операцию побитового исключающего ИЛИ. Так как ответ может быть большим, выведите его по модулю \(998\,244\,353\).

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

Первая строка содержит два целых числа \(n\) и \(x\) (\(1 \leq n \leq 150\,000\), \(0 \leq x < 2^{30}\)). Здесь \(n\) — размер массива.

Вторая строка содержит \(n\) целых чисел \(a_1, a_2, \ldots, a_n\) (\(0 \leq a_i < 2^{30}\)) — сам массив.

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

Выведите одно целое число: количество непустых подмножеств таких, что побитовое исключающее ИЛИ любых двух элементов не больше \(x\), по модулю \(998\,244\,353\).


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

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

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