아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Праздничные вычисления по сахарному модулю

시간 제한2초메모리 제한1024 MB

요약
덧셈, 뺄셈, 2배, 2로 나누기와 1000칸 메모리만 있는 계산기로 두 수의 비트 XOR을 계산하는 과정을 출력한다.
난이도

보통10점 중 5점

유형
비트 연산, 구현
정답자
아직 제출이 없습니다

문제

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

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

Калькулятор хранит в памяти все числа, которые были получены игроком во время игры, а так же умеет складывать числа, вычитать их, умножать или целочисленно делить число на 22. При этом память калькулятора, конечно же, ограничена: он не может хранить более 10001000 целых чисел. Кроме того, все числа, хранящиеся в калькуляторе должны лежать в диапазоне от 00 до 231−12^{31}-1 включительно. Изначально в памяти калькулятора лежат числа xx и yy. Игрок может использовать только числа, хранящиеся в памяти калькулятора.

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

입력

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

출력

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

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

  • 11 --- сложить два числа
  • 22 --- вычесть из первого числа второе
  • 33 --- умножить число на 22
  • 44 --- целочисленно поделить число на 22.

Если тип операции 11 или 22, далее через пробел выведите два числа --- номера итераций, на которых каждое из используемых чисел было получено. Если тип операции 33 или 44, выведите одно число --- номер итерации, на которой используемое число было получено.

Например, чтобы вычесть из числа, полученного на итерации 3 число, полученное на итерации 4, следует вывести <<22 33 44>>.

Будем считать, что числа xx и yy из входных данных были получены на 11-й и 22-й итерациях соответственно.

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

예제2

  1. 예제 1

    입력
    1 2
    
    예상 출력
    3
    3 1
    4 2
    1 3 4
    
  2. 예제 2

    입력
    15 4
    
    예상 출력
    1
    2 1 2