Codeforces Round 638 (Div. 2) |
---|
Закончено |
Феникс решил стать ученым! Сейчас он изучает рост бактерий.
Изначально, в день $$$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$$$-й день.
Если существует несколько решений, выведите любое из них.
3 9 11 2
3 1 0 2 3 1 1 2 1 0
В первом наборе, можно получить общую массу бактерий ровно $$$9$$$ следующим образом:
$$$ $$$
В втором наборе, можно получить общую массу бактерий ровно $$$11$$$ следующим образом:
$$$ $$$
Во третьем наборе, бактерия не делится в день $$$1$$$, а потом увеличивает массу до $$$2$$$ в ночь $$$1$$$.
Название |
---|