D1. Разбиение XOR — сольная версия
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Вы можете делать взломы только тогда, когда обе версии задачи решены.

Дана целочисленная переменная $$$x$$$, которая изначально имеет значение $$$n$$$. Операция разбиения определена как:

  • Выберите значение $$$y$$$ такое, что $$$0 \lt y \lt x$$$ и $$$0 \lt (x \oplus y) \lt x$$$.
  • Обновите $$$x$$$, приравняв его $$$x = y$$$ либо $$$x = x \oplus y$$$.
Определите, возможно ли преобразовать $$$x$$$ в $$$m$$$ за не более чем $$$63$$$ операции, используя такую операцию разбиения. Если это возможно, предъявите последовательность операций для достижения $$$x = m$$$.

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

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

В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит два целых числа $$$n$$$ и $$$m$$$ ($$$1 \leq m \lt n \leq 10^{18}$$$) — изначальное значение $$$x$$$ и требуемое значение $$$x$$$.

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

Для каждого набора тестовых данных выведите ваш ответ в следующем формате.

Если невозможно достичь требуемого значения $$$m$$$ за $$$63$$$ операции, то выведите $$$-1$$$ в единственной строке.

Иначе,

Первая строка должна содержать целое число $$$k$$$ ($$$1 \leq k \leq 63$$$) — где $$$k$$$ является количеством произведенных операций.

Следующая строка должна содержать $$$k+1$$$ целое число — последовательность, в виде которой переменная $$$x$$$ изменяется с ходом операций разбиения. $$$1$$$-е и ($$$k+1$$$)-ое числа должны равняться $$$n$$$ и $$$m$$$ соответственно.

Пример
Входные данные
3
7 3
4 2
481885160128643072 45035996273704960
Выходные данные
1
7 3
-1
3
481885160128643072 337769972052787200 49539595901075456 45035996273704960
Примечание

В первом тестовом случае $$$n = 7$$$, для первой операции $$$x = 7$$$, если мы выберем $$$y = 3$$$, тогда $$$(7 \oplus 3) \lt 7$$$, следовательно мы можем обновить $$$x$$$ сделав его равным $$$3$$$ уже на первой операции, чему и равно $$$m$$$.

Во втором тестовом случае $$$n = 4$$$, для первой операции $$$x = 4$$$.

Если мы выберем:

  • $$$y = 1$$$ тогда $$$(4 \oplus 1) \gt 4$$$
  • $$$y = 2$$$ тогда $$$(4 \oplus 2) \gt 4$$$
  • $$$y = 3$$$ тогда $$$(4 \oplus 3) \gt 4$$$

Следовательно мы не можем выполнить первую операцию и невозможно сделать $$$x = 2$$$.