В современном мире есть множество различных баз данных, основанных на разных структурах и принципах. В дополнение к реляционным (например, MySQL) и графовым (например, GraphQL), недавно стажер компании VK предложил идею новой базы данных DequeQL, основанной на деках. Разумеется, не все идеи стажеров действительно хорошие, но, будучи ответственным ментором, Лев решил реализовать его идею и проверить ее эффективность.
Дек — структура данных, хранящая последовательность элементов, и позволяющая добавлять новый элемент или вынимать элемент с любого из двух концов последовательности. Базовым блоком данных в DequeQL является юнит (unit) — пустой дек, соответствующий минимальной единице информации. Сама база данных представляет из себя множество пронумерованных деков, вложенных друг в друга. Дек, не вложенный ни в какой другой, называется корнем. Разумеется, если некоторый юнит не лежит в другом деке, он тоже считается корнем.
DequeQL поддерживает четыре операции на изменение:
Обратите внимание, что операции можно производить только над корневыми элементами базы данных. Лев уже реализовал эти операции, и решил, что DequeQL может быть полезна в одном из новых проектов VK, если расширить ее функционал и добавить поддержку ответов на запрос pop_complexity($$$d$$$) — какое минимальное количество операций pop_back или pop_front надо выполнить, чтобы $$$d$$$ стал корнем? Сама структура базы данных при этом не меняется, то есть выполнять соответствующие действия pop не надо.
Пока у Льва выходной, у вас есть возможность зарекомендовать себя в качестве квалифицированного разработчика. Вам дана база данных, состоящая из $$$n$$$ юнитов с номерами от $$$1$$$ до $$$n$$$. Реализуйте требуемый функционал и выведите ответ на каждый запрос.
В первой строке ввода даны два целых числа $$$n$$$ и $$$m$$$ — количество юнитов в базе данных и количество запросов ($$$1 \le n, m \le 2 \cdot 10^5$$$).
В $$$i$$$-й из следующих строк дан $$$i$$$-й запрос в формате «<command> $$$d$$$» или «<command> $$$d_1$$$ $$$d_2$$$», где <command> — команда или запрос, описанные в условии ($$$1 \le d, d_1, d_2 \le n$$$). Гарантируется, что операции изменения базы данных производятся только над корневыми вершинами, и что операции pop производятся только с непустыми деками.
Для каждого запроса информации выведите в отдельной строке ответ на этот запрос — минимальное количество операций pop, необходимое, чтобы сделать соответствующий элемент корнем.
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
| Подзадача | Баллы | Ограничения | Необходимые подзадачи | Информация о проверке |
| 0 | – | примеры из условия | полная | |
| 1 | 8 | $$$n, m \le 10$$$ | 0 | полная |
| 2 | 9 | каждый дек напрямую содержит не более двух элементов | первая ошибка | |
| 3 | 13 | каждый дек напрямую содержит не более трех элементов | 2 | первая ошибка |
| 4 | 12 | $$$n, m \le 2000$$$ | 0, 1 | первая ошибка |
| 5 | 20 | все pop_complexity идут после операций изменения | первая ошибка | |
| 6 | 14 | нет операций pop | первая ошибка | |
| 7 | 24 | нет | 0 – 6 | первая ошибка |
6 11push_back 2 1push_front 3 1pop_back 1push_back 4 2push_front 6 5push_front 2 1push_back 5 1pop_complexity 3pop_complexity 4pop_complexity 5pop_complexity 6
2 2 1 2