Exam
Неприязнь к философии сближает, необходимость сдавать экзамен — тем более. Но главное — четкое ощущение нежелания к нему готовиться.
— Смотри, Ира, подходишь к преподавателю и предлагаешь ему такую штуку: у нас есть 18 билетов, они лежат лицом вниз. Давайте K из них перевернем, потом Вы их хорошенько перетасуете и положите в одну стопку. А дальше я, в смысле ты, с закрытыми глазами разделишь их на две стопки так, что в них будет одинаковое количество открытых билетов. При этом тебе разрешается, скажем, поменять местами два билета в первой стопке, перевернуть какой-то билет в первой стопке ну и безвозвратно переложить билет из первой стопки во вторую. Ты все это делаешь с закрытыми глазами и о состоянии билетов не имеешь никакой информации кроме той, что ты знаешь число K и помнишь все свои действия. — Ладно, и что дальше? — Так вот, если у тебя это благополучно получается, то преподаватель дает тебе возможность отвечать любой среди открытых билетов. — А если нет? — Будем верить в чудо. — Почему бы тебе самому не попробовать? — Не то что бы у меня хорошая репутация. — Поэтому хочешь испортить мою? — Аж три раза.
Входные данные
Дано единственное четное число K (0 ≤ K ≤ 18) — количество перевернутых лицом вверх билетов (изначально все 18 билетов находятся в первой стопке).
Выходные данные
Если нет возможности разделить билеты на две непустые стопки требуемым образом, вывести -1. Иначе в первой строке вывести количество действий Q (0 ≤ Q ≤ 2^9+36). Далее в Q строках описать порядок действий. Каждая строка должна содержать команду одного из трех типов:
swap i j — поменять местами билеты на позициях i и j первой стопки.
rev i — перевернуть билет на позиции i первой стопки.
out i — переместить билет на позиции i из первой стопки во вторую. После этой операции все билеты первой стопки, начиная с (i+1)-го, занимают позицию на единицу меньше.
Стопки должны оказаться непустые и содержать одинаковое количество открытых билетов (1 ≤ i ≠ j ≤ 18).