Святкові обчислення за цукровим модулем
Як ви вже знаєте, Ральф мріє стати найкращим у якійсь грі, завоювати в ній золоту медаль і стати справжнім героєм! Цього разу Ральф вирішив показати, що він не лише сильний і хоробрий, а ще й дуже розумний. Тому він вирушив у гру "Святкові обчислення за цукровим модулем".
Мета гри проста: гравцеві даються два числа. Використовуючи калькулятор, потрібно знайти x xor y. Вираз x xor y означає застосування операції побітового виключного або (побітового додавання за модулем 2) до чисел x і y. Ця операція є у всіх сучасних мовах програмування, наприклад, у мові C++ і Java вона позначається ˆ, у Pascal — xor.
Калькулятор зберігає в пам'яті всі числа, які були отримані гравцем під час гри, а також вміє додавати числа, віднімати їх, множити або цілочисельно ділити число на 2. При цьому пам'ять калькулятора, звісно ж, обмежена: він не може зберігати більше 1000 цілих чисел. Крім того, всі числа, що зберігаються в калькуляторі, повинні лежати в діапазоні від 0 до 2^31
- 1 включно. Спочатку в пам'яті калькулятора лежать числа x і y. Гравець може використовувати лише числа, що зберігаються в пам'яті калькулятора.
Ральф - дуже розумний хлопець, але з Ванілопою знову сталася біда, і він поспішає до неї на допомогу. Тому стати найкращим у грі «Святкові обчислення за цукровим модулем» доведеться саме вам!
Вхідні дані
В одному рядку дано два цілі числа x і y (1 ≤ x, y ≤ 10^9
) - числа, які спочатку лежать в пам'яті калькулятора.
Вихідні дані
У першому рядку виведіть кількість дій n (1 ≤ n ≤ 1000), яке потрібно здійснити гравцеві для перемоги в грі.
У кожному з наступних n рядків виведіть спочатку тип дії, яку ви хочете здійснити на поточному кроці:
1 - додати два числа
2 - відняти з першого числа друге
3 - помножити число на 2
4 - цілочисельно поділити число на 2.
Якщо тип операції 1 або 2, далі через пробіл виведіть два числа — номери ітерацій, на яких кожне з використаних чисел було отримано. Якщо тип операції 3 або 4, виведіть одне число - номер ітерації, на якій використане число було отримано.
Наприклад, щоб відняти з числа, отриманого на ітерації 3 число, отримане на ітерації 4, слід вивести "2 3 4".
Вважатимемо, що числа x і y з вхідних даних були отримані на 1-й і 2-й ітераціях відповідно.
Зверніть увагу, що число x xor y повинно бути отримано на останній ітерації. Від вас не вимагається знайти мінімальний за кількістю дій відповідь.