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

Задача . D. Феникс и наука


Феникс решил стать ученым! Сейчас он изучает рост бактерий.

Изначально, в день \(1\), есть одна бактерия массой \(1\).

Каждый день некоторое количество бактерий делятся (возможно, все или ни одной). Когда бактерия массой \(m\) делится, она превращается в две бактерии массой \(\frac{m}{2}\) каждая. Например, бактерия массой \(3\) может разделиться на две бактерии массой \(1.5\).

Каждую ночь масса каждой бактерии увеличивается на один.

Феникса интересует вопрос: может ли общая масса бактерий стать в точности равна \(n\). Если может, то его интересует как добиться такой массы за минимальное количество ночей. Помогите ему стать самым лучшим ученым!

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

Входные данные состоят из нескольких наборов. В первой строке задано целое число \(t\) (\(1 \le t \le 1000\)) — количество наборов входных данных.

В единственной строке каждого набора задано целое число \(n\) (\(2 \le n \le 10^9\)) — суммарная масса бактерий, которой хочет добиться Феникс.

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

Для каждого набора входных данных, если не существует способа получить общую массу равную \(n\), выведите -1. В противном случае, выведите две строки.

В первой строке выведите целое число \(d\) — минимальное необходимое количество ночей.

В следующей строке выведите \(d\) целых чисел, где \(i\)-е число обозначает количество бактерий, которые поделятся в \(i\)-й день.

Если существует несколько решений, выведите любое из них.

Примечание

В первом наборе, можно получить общую массу бактерий ровно \(9\) следующим образом:

  • День \(1\): Бактерия с массой \(1\) делится. Получаем две бактерии с массой \(0.5\).
  • Ночь \(1\): Все бактерии увеличивают массу на один. Получаем две бактерии с массой \(1.5\).
  • День \(2\): Ни одна бактерия не делится.
  • Ночь \(2\): Получаем две бактерии с массой \(2.5\).
  • День \(3\): Обе бактерии делятся. Получаем четыре бактерии с массой \(1.25\).
  • Ночь \(3\): Получаем четыре бактерии с массой \(2.25\).
Суммарная масса равна \(2.25+2.25+2.25+2.25=9\). Можно доказать, что \(3\) — минимальное необходимое количество ночей. Есть и другие способы добиться суммарной массы 9 за 3 ночи.

\( \)

В втором наборе, можно получить общую массу бактерий ровно \(11\) следующим образом:

  • День \(1\): Бактерия с массой \(1\) делится. Получаем две бактерии с массой \(0.5\).
  • Ночь \(1\): Получаем две бактерии с массой \(1.5\).
  • День \(2\): Одна бактерия делится. Получаем три бактерии с массами \(0.75\), \(0.75\) и \(1.5\).
  • Ночь \(2\): Получаем три бактерии с массами \(1.75\), \(1.75\) и \(2.5\).
  • День \(3\): Бактерия с массой \(1.75\) и бактерия с массой \(2.5\) делятся. Получаем пять бактерий с массами \(0.875\), \(0.875\), \(1.25\), \(1.25\) и \(1.75\).
  • Ночь \(3\): Получаем пять бактерий с массами \(1.875\), \(1.875\), \(2.25\), \(2.25\) и \(2.75\).
Суммарная масса равна \(1.875+1.875+2.25+2.25+2.75=11\). Можно доказать, что \(3\) — минимальное необходимое количество ночей. Есть и другие способы добиться суммарной массы 11 за 3 ночи.

\( \)

Во третьем наборе, бактерия не делится в день \(1\), а потом увеличивает массу до \(2\) в ночь \(1\).


Примеры
Входные данныеВыходные данные
1 3
9
11
2
3
1 0 2 
3
1 1 2
1
0

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

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