Йода: Визит на Камину собираюсь я совершить... На армию клонов взглянуть, созданную для Республики.
Клонеры с планеты Камину выращивают клонов, причём отменных.
Таких хороших результатов они достигают за счёт того, что тщательно следят за эволюцией своих творений.
Сейчас каминуане заняты тем, что разрабатывают новую технологию обучения, позволяющую повысить эффективность клонов.
Чтобы было удобней следить за ходом экспериментов, клонеры разработали специальную систему контроля «Clone Version System».
Эта система довольно проста в эксплуатации.
В распоряжении каминуан есть некоторый набор программ обучения.
Эффективность клона зависит от того, какие программы и в каком порядке он усвоил.
Каминуане могут обучить любого клона по одной из программ, если он ещё не усвоил её ранее.
После обучения клон приобретает нужные знания, и программа считается усвоенной.
Для удобства проведения экспериментов каминуане предоставили себе возможность откатывать действие последней усвоенной клоном программы.
Знания клона в случае отката возвращаются к уровню, когда программа ещё не была усвоена.
Тогда этого клона в дальнейшем можно опять обучать по такой программе.
Откаты можно совершать до тех пор, пока клон не вернётся к базовым знаниям.
Кроме отката также предусмотрена возможность переусвоения.
В случае, если каминуанин по ошибке применил откат, он может его отменить.
Система контроля хранит историю откатов каждого клона.
При применении очередного отката в историю делается соответствующая запись.
При переусвоении — запись стирается.
В случае обучения (не переусвоения) вся история откатов данного клона стирается.
Переусвоение можно применять до тех пор, пока в истории по клону существуют записи.
И наконец в системе есть возможность клонирования.
В случае, если каминуанам нравится текущий вариант клона, они могут его расклонировать.
То есть создать нового клона с той же последовательностью усвоенных программ и историей откатов.
Изначально у каминуан есть один клон, имеющий базовые знания.
Помогите им с анализом хода экспериментов.
Исходные данные
В первой строке даны числа
n — количество запросов и
m — количество обучающих программ (1 ≤
n,
m ≤ 5·10
5).
Каждая из следующих
n строк имеет один из перечисленных форматов:
- learn ci pi. Обучить клона с номером ci по программе pi (1 ≤ pi ≤ m).
- rollback ci. Откатить последнюю программу у клона с номером ci.
- relearn ci. Переусвоить последний откат у клона с номером ci.
- clone ci. Клонировать клона с номером ci.
- check ci. Вывести программу, которой клон с номером ci владеет и при этом усвоил последней.
Все команды корректны, в частности, к клону, уже владеющему некоторой программой,
learn по ней же применяться не будет.
К клону, не владеющему ни одной программой, не применяется
rollback.
А также
relearn возможен только при непустой истории откатов.
В запросах может фигурировать только уже существующий клон.
Номера клонам присваиваются в порядке их возникновения.
Клон, с которого каминуане начали свои эксперименты, имел номер один.
Результат
После каждого запроса check ci в отдельной строке выведите результат.
Если клон владеет только базовыми знаниями, выведите basic, иначе — номер последней изученной программы.
Пример
исходные данные | результат |
---|
9 10
learn 1 5
learn 1 7
rollback 1
check 1
clone 1
relearn 2
check 2
rollback 1
check 1
| 5
7
basic
|
Автор задачи: Егор Щелконогов