Є масив , елементи якого пронумеровані від до . Початково a_i = 0 для 1 \leq i < 100, а останній елемент a_{100} рівний .
Масив можна змінювати, використовуючи операції збільшення. Для того, щоб виконати операцій збільшення, необхідно вибрати цілих чисел p_1, p_2, \dots, p_m (1\le p_i < 100) та послідовно виконати операції присвоєння a_{p_i} \leftarrow (a_{p_i} + a_{p_i + 1}) для від до .
Задано ціле число . Знайдіть послідовність операцій збільшення, після виконання яких елемент на першій позиції в масиві стане рівним .
У першому рядку задано два цілі числа , (1 \le t \le 100, 0 \leq g \leq 5) — кількість наборів вхідних даних та номер блоку тестів відповідно.
У наступних рядках задано по одному цілому числу (1 \le n \le 10^{18}) — значенню, якому повинно дорівнювати a_1 після виконання операцій збільшення в черговому наборі.
Для кожного набору вхідних даних у першому рядку виведіть одне ціле число (0 \leq m \leq 2000) — кількість операцій збільшення.
У другому рядку виведіть цілих чисел p_i (1 \le p_i < 100) — параметри операцій збільшення.
Якщо існує кілька правильних відповідей, дозволяється вивести будь-яку з них.
Приклад
1 0
199
99 98 ... 7 6 5 4 3 2 1Приклад
2 0
3
16101
99 98 ... 7 6 5 4 3 2 1 1 1
103
99 98 ... 7 6 5 4 4 3 3 2 2 1 1Для наочності приклади вихідних даних в умові зменшено: для отримання правильної відповіді необхідно замінити «...» на послідовність цілих чисел від до .
Розглянемо другий набір вхідних даних другого прикладу n = 16. Перші 8 елементів масиву після виконання чергової операції виглядають наступним чином:
p_1 = 99, a = [0, 0, 0, 0, 0, 0, 0, 0, \ldots, 0, 0, 1, 1];
p_2 = 98, a = [0, 0, 0, 0, 0, 0, 0, 0, \ldots, 0, 1, 1, 1];
p_{93} = 7, a = [0, 0, 0, 0, 0, 0, 1, 1, \ldots, 1, 1, 1, 1];
p_{94} = 6, a = [0, 0, 0, 0, 0, 1, 1, 1, \ldots, 1, 1, 1, 1];
p_{95} = 5, a = [0, 0, 0, 0, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];
p_{96} = 4, a = [0, 0, 0, 1, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];
p_{97} = 4, a = [0, 0, 0, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];
p_{98} = 3, a = [0, 0, 2, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];
p_{99} = 3, a = [0, 0, 4, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];
p_{100} = 2, a = [0, 4, 4, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];
p_{101} = 2, a = [0, 8, 4, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];
p_{102} = 1, a = [8, 8, 4, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];
p_{103} = 1, a = [16, 8, 4, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1].
У перших чотирьох блоках тестів дозволяється використати не більше ніж 300 операцій збільшення.
( бали): n \leq 100;
( балів): n = k^2 для деякого цілого 1 \le k \le 100;
( балів): n = (2^k - 1) для деякого цілого ;
( балів): — число Фібоначчі ( є одним з елементів послідовності, де кожен елемент є сумою двох попередніх: 1, 1, 2, 3, 5, 8, 13, 21, 34, \dots);
(до балів): без додаткових обмежень. Нехай максимальна кількість використаних операцій збільшення дорівнює . Якщо c \le 300, то ви отримаєте балів, а інакше ви отримаєте (17 + \left \lfloor \frac{2000 - c}{34} \right \rfloor) балів.
Код на мові C++, який обчислює кількість балів за останній блок тестів залежно від кількості використаних операцій збільшення:
((c <= 300) ? 67 : (17 + (2000 - c) / 34))