Праздничные вычисления по сахарному модулю
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Как вы уже знаете, Ральф мечтает стать лучшим в какой-нибудь игре, завоевать в ней золотую медаль и стать настоящим героем! На этот раз Ральф решил всем показать что он не только сильный и храбрый, но еще и очень умный, именно поэтому он отправился в игру «Праздничные вычисления по сахарному модулю».

Цель игры проста: игроку даются два числа. Используя калькулятор, требуется найти $$$x \oplus y$$$. Выражение $$$x \oplus y$$$ обозначает применение операции побитового исключающего или (побитового сложения по модулю 2) к числам $$$x$$$ и $$$y$$$. Данная операция есть во всех современных языках программирования, например, в языке C++ и Java она обозначается ^, в Pascal — xor.

Калькулятор хранит в памяти все числа, которые были получены игроком во время игры, а так же умеет складывать числа, вычитать их, умножать или целочисленно делить число на $$$2$$$. При этом память калькулятора, конечно же, ограничена: он не может хранить более $$$1000$$$ целых чисел. Кроме того, все числа, хранящиеся в калькуляторе должны лежать в диапазоне от $$$0$$$ до $$$2^{31}-1$$$ включительно. Изначально в памяти калькулятора лежат числа $$$x$$$ и $$$y$$$. Игрок может использовать только числа, хранящиеся в памяти калькулятора.

Ральф — очень умный парень, вот только с Ванилопой снова стряслась беда, он спешит к ней на помощь. Поэтому стать лучшим в игре «Праздничные вычисления по сахарному модулю» придется именно вам!

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

В первой строке даны два целых числа $$$x$$$ и $$$y$$$ — числа, которые изначально лежат в памяти калькулятора ($$$1 \leq x, y \leq 10^9$$$).

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

В первой строке выведите $$$n$$$ — количество действий, которое нужно совершить игроку для победы в игре ($$$1 \leq n \leq 1000$$$).

В каждой из последующих $$$n$$$ строк выведите сначала тип действия, который вы хотите совершить на текущем шаге:

Если тип операции $$$1$$$ или $$$2$$$, далее через пробел выведите два числа — номера итераций, на которых каждое из используемых чисел было получено. Если тип операции $$$3$$$ или $$$4$$$, выведите одно число — номер итерации, на которой используемое число было получено.

Например, чтобы вычесть из числа, полученного на итерации 3 число, полученное на итерации 4, следует вывести «$$$2$$$ $$$3$$$ $$$4$$$».

Будем считать, что числа $$$x$$$ и $$$y$$$ из входных данных были получены на $$$1$$$-й и $$$2$$$-й итерациях соответственно.

Обратите внимание, что число $$$x \oplus y$$$ должно быть получено на последней итерации. От вас не требуется найти минимальный по количеству действий ответ.

Примеры

Входные данные
1 2
Выходные данные
3
3 1
4 2
1 3 4
Входные данные
15 4
Выходные данные
1
2 1 2