\begin{tutorial}{Очередь за кексами} Давайте просто промоделируем все действия. Заведем список элементов, а также сохраним по ключу $x$ указатель на элемент списка. Мы можем это сделать, так как все элементы различны. Например, в С++ можно просто завести коллекцию list, а также map::iterator> или реализовать свой список. Теперь мы можем легко обрабатывать все запросы, а в конце просто выведем весь список. Запрос 1-го типа можно обработать так: просто берем по ключу указатель на нужный элемент и вставляем перед ним другой элемент, останется только по ключу $x$ записать указатель на новый элемент. Запрос 2-го типа~--- просто добавить в список элемент в конец и сохранить на него указатель. Запрос 3-го типа~--- удаляем из списка элемент по его указателю. В конце просто выводим массив. Итоговая сложность $O(mlog(n))$ \end{tutorial}