Работа в ресторане
Прошлой ночью Том пошел на свидание с довольно красивой девушкой. Однако он забыл взять с собой кредитную карточку, а в бумажнике совсем не осталось наличности, поэтому ему пришлось остаться в ресторане чтобы отработать ужин. В его задачу входило забирать тарелки у официанта, когда тот собирал их со столов, и относить в моечную машину. В мойку тарелки должны поступать в том же порядке, в котором Том их получал от официанта. В противном случае мойка могла занимать больше времени, так как еда могла прилипнуть и засохнуть на тарелке. Держать все тарелки в руках - плохая идея, поэтому Том клал на стол те тарелки, которые передавал ему официант, и переносил тарелки со стола в моечную машину как только наступал для этого черед. На столе можно положить только две кипы тарелок, которые в дальнейшем будем называть кипа 1 и кипа 2. У Тома есть только один стол.
В прошлом году Том выиграл соревнования по программированию в юго-западном европейском регионе, поэтому он может эффективно оптимизировать любой процесс. По имеющейся последовательности команд, которую получает Том, необходимо вывести одну из возможных последовательностей перемещения тарелок, которая обеспечит ему выполнение задания.
Входные данные
Состоит из нескольких тестов. Первая строка каждого теста содержит число n (1 ≤ n ≤ 1000). За ней следуют n строк, каждая из которых содержит или DROP m или TAKE m, где m > 0 равно числу тарелок, которое следует опустить или взять. DROP m означает событие, когда Том берет у официанта m тарелок и кладет их на стол. TAKE m означает взять Тому m тарелок со стола и опустить их в том же порядке в посудомоечную машину. Том никогда не получит команду TAKE m, если на столе находится меньше m тарелок. Сумма M всех значений m, соответствующих операциям DROP, не превосходит 10^5
. Отметим, что после выполнения последней инструкции на столе у Тома могут оставаться тарелки, так как Том может быть освобожден от своих обязанностей и остаться до закрытия ресторана.
Последний тест содержит n = 0 и не обрабатывается.
Выходные данные
Для каждого теста следует вывести набор строк, содержащих команды, выполняемые над тарелками. Содержание каждой строки может быть одним из следующим:
• DROP 1 m ( DROP 2 m ), m > 0, если Том должен взять тарелку у официанта, покласть ее на верх кипы 1 (кипы 2), и повторить операцию m раз.
• TAKE 1 m ( TAKE 2 m ), m > 0, если Том должен взять тарелку с вершины кипы 1 (кипы 2), передать ее в мойку и повторить операцию m раз.
• MOVE 1->2 m ( MOVE 2->1 m ), m > 0, если Том должен взять тарелку с вершины кипы 1 (кипы 2), и переложить ее на верх кипы 2 (кипы 1) и повторить операцию m раз.
Вывести необходимо как минимум 6n строк, а общее количество операций в Вашем отчете (то есть сумма всех выведенных m-ок для всех трех видов команд), не должно превышать 6M, иначе Том не сможет выполнть возложенное на него задание.
Том должен выполнять команды в такой же последовательности в которой они поступают. Это означает, что если он получает команду TAKE m, то необходимо выполнить некоторое количество операций MOVE и TAKE таких, что суммарное количество взятых тарелок равно в точности m перед тем как он перейдет к выполнению следующей команды; и если он получает команду DROP m, то должен выполнить последовательность операций DROP и MOVE, в которых суммарное количество покладеных тарелок равно в точности m перед тем как он начнет выполнять операции со следующей команды.
Конечно же, запрещено брать тарелки у официанта или передавать их в мойку при отсутствии соответствующих команд.
Между выводом данных на соседние тесты следует печатать пустую строку.
Любое допустимое решение будет принято.