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

Задача . Sequence Construction


Задача

Темы:

Вам даны целые числа \(M\) и \(K\) \((1 \leq M \leq 10 ^ 9, 1 \leq K \leq 31)\). Выберите положительное целое \(N\) и сконструируйте последовательность \(a\) из \(N\) неотрицательных целых чисел так, чтобы выполнялись следующие условия:

  • \(1 \le N \le 100\)
  • \(a_1 + a_2 + \dots + a_N = M\)
  • \(\text{popcount}(a_1) \oplus \text{ popcount}(a_2) \oplus \dots \oplus \text{ popcount}(a_N) = K\)

Если такой последовательности не существует, выведите \(-1\).

\(\dagger \text{ popcount}(x)\) это количество \(1\) в двоичном представлении числа \(x\). Например, popcount от \(11\) это \(3\), а popcount от \(16\) это \(1\).

\(\dagger \oplus\) это оператор побитового XOR.

Ввод содержит \(T\) (\(1 \le T \le 5 \cdot 10^3\)) независимых подтестов.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(T\).

Первая и единственная строка каждого подтеста содержит \(M\) и \(K\).

Гарантируется, что все тесты уникальны.

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите решения для всех \(T\) подтестов таким образом:

Если ответ не существует выведите \(-1\).

Иначе, первая строка для подтеста должна содержать \(N\), длина последовательности -- (\(1 \le N \le 100\)).

Вторая строка для этого подтеста должна содержать \(N\) разделённых пробелом целых чисел, которые удовлетворяют условиям -- (\(0 \le a_i \le M\)).


Примеры
Входные данныеВыходные данные
1 3
2 1
33 5
10 5
2
2 0
3
3 23 7 
-1

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

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