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

Задача . B. Ребенок и множество


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

К счастью, Пикс помнит кое-что о своем множестве S:

  • его элементами были различные целые числа от 1 до limit;
  • значение равнялось sum; функция lowbit(x) равна 2k, где k обозначает позицию первой единицы в двоичном представлении числа x. Например, lowbit(100102) = 102, lowbit(100012) = 12, lowbit(100002) = 100002 (числа записаны в двоичном представлении).

Помогите Пиксу. Найдите любое множество S, удовлетворяющее всем вышеперечисленным условиям?

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

В первой строке записано два целых числа: sum, limit (1 ≤ sum, limit ≤ 105).

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

В первой строке выведите целое число n (1 ≤ n ≤ 105), обозначающее размер S. Затем выведите элементы множества S в любом порядке. Если есть несколько правильных ответов, выведите любой.

Если подходящего множества не существует, выведите -1.

Примечание

В примере 1: lowbit(4) = 4, lowbit(5) = 1, 4 + 1 = 5.

В примере 2: lowbit(1) = 1, lowbit(2) = 2, lowbit(3) = 1, 1 + 2 + 1 = 4.


Примеры
Входные данныеВыходные данные
1 5 5
2
4 5
2 4 3
3
2 3 1
3 5 1
-1

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

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