Сума — степінь двійки
Обмеження: 2 сек., 256 МіБ
У Зеника і Марічки є послідовність із nn натуральних чисел ai.
Марічці подобається, коли сума усіх чисел послідовності є степенем двійки.
Зеник може за один крок виконати одну із двох можливих операцій:
Помножити довільне із чисел на 2.
Поділити націло на 2 довільне із чисел, яке є більшим за 1.
Ваше завдання — допомогти Зенику знайти довільну послідовність із не більше ніж 2⋅105 операцій, після виконання яких сума чисел послідовності стане степенем двійки.
Вхідні дані
У першому рядку задано одне ціле число n — розмір послідовності.
У наступному рядку задано n цілих чисел ai — початкова послідовність (1≤i≤n).
Вихідні дані
У першому рядку виведіть одне ціле невід’ємне число k — кількість операцій.
У наступних k рядках виведіть операції в тому порядку, в якому їх слід виконувати, у наступному форматі:
M
i — помножити i-те число на 2.D
i — поділити націло на 2 i-те число. На момент виконання операції ai повинно бути більше за 1.
Гарантовано, що відповідь існує для заданих обмежень. Якщо правильних відповідей декілька — виведіть будь-яку із них.
Обмеження
1≤n≤105,
1≤ai≤109.
0≤k≤2⋅105.
Приклади
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
4 1 3 4 2 | 1 D 2 |
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
1 8 | 0 |
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
3 7 47 4 | 4 D 1 D 1 M 3 M 3 |
Примітки
У першому прикладі достатньо поділити націло на 2 друге число, після цього послідовність стане [1, 1, 4, 2]. Сума чисел у ній рівна 8=23.
У другому прикладі сума вже є степенем двійки, отже можна не виконувати змін.