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

Задача . C. Возрастающая последовательность с фиксированным ИЛИ


Дано положительное целое число \(n\). Найдите самую длинную последовательность положительных целых чисел \(a=[a_1,a_2,\ldots,a_k]\), которая удовлетворяет следующим условиям, и выведите эту последовательность:

  • \(a_i\le n\) для всех \(1\le i\le k\).
  • \(a\) строго возрастающая. То есть \(a_i>a_{i-1}\) для всех \(2\le i\le k\).
  • \(a_i\,|\,a_{i-1}=n\) для всех \(2\le i\le k\), где \(|\) обозначает операцию побитового ИЛИ.
Входные данные

Каждый тест содержит несколько наборов входных данных. Первая строка содержит количество наборов входных данных \(t\) (\(1 \le t \le 1000\)). Затем следует описание наборов входных данных.

Единственная строка каждого набора входных данных содержит одно целое число \(n\) (\(1\le n\le 10^{18}\)).

Гарантируется, что сумма длин самых длинных допустимых последовательностей не превышает \(5\cdot 10^5\).

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

Для каждого набора входных выведите две строки. В первой строке выведите длину вашей сконструированной последовательности \(k\). Во второй строке выведите \(k\) положительных целых чисел, обозначающих последовательность. Если существует несколько самых длинных последовательностей, то вы можете вывести любую из них.


Примеры
Входные данныеВыходные данные
1 4
1
3
14
23
1
1
3
1 2 3
4
4 10 12 14
5
7 18 21 22 23

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

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