#include <iostream>
#include <unordered_map>
using namespace std;
class Node
{
public:
int data;
Node* next=NULL;
Node* prev=NULL;
};
int main()
{
Node* front = NULL;
Node* rear = NULL;
unordered_map<int, Node* > umap;
int N,Q;
cin >> N >> Q;
for(int i=0; i < N; i++)
{
int temp;
cin >> temp;
Node* fake = new Node();
fake->data = temp;
if(front == NULL && rear == NULL && umap.size() == 0)
{
front=fake;
rear=fake;
}
else
{
rear->next=fake;
fake->prev=rear;
rear=fake;
}
umap[temp]=fake;
}
for(int i=0; i < Q; i++)
{
int ty;
cin >> ty;
if(ty == 3)
{
if(rear == NULL && front == NULL && umap.size() == 0)
{
cout<<"-1\n";
}
else
{
cout<<rear->data<<"\n";
umap.erase(rear->data);
if(rear == front)
{
rear = NULL;
front = NULL;
}
else
{
Node* fake=rear;
rear=rear->prev;
rear->next=NULL;
fake->prev=NULL;
delete fake;
}
}
}
else
{
int update;
cin>>update;
if(ty == 1)
{
if(umap.find(update) == umap.end())
{
Node* fake = new Node();
fake->data = update;
umap[update]=fake;
if(front == NULL && rear == NULL)
{
front=fake;
rear=fake;
}
else
{
fake->next = front;
front->prev = fake;
front = fake;
}
}
else
{
cout<<"-1\n";
}
}
else
{
if(umap.find(update) == umap.end())
{
cout<<"-1\n";
}
else
{
Node* fake;
fake = umap[update];
if(front == rear)
{
rear = NULL;
front = NULL;
}
else if(fake == front)
{
front=front->next;
fake->next=NULL;
front->prev=NULL;
}
else if(fake == rear)
{
rear=rear->prev;
rear->next=NULL;
fake->prev=NULL;
}
else
{
fake->prev->next = fake->next;
fake->next->prev = fake->prev;
fake->next = NULL;
fake->prev = NULL;
}
delete fake;
umap.erase(update);
}
}
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPiAKI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAKY2xhc3MgTm9kZQp7CiAgICBwdWJsaWM6IAogICAgICAgIGludCBkYXRhOyAKICAgICAgICBOb2RlKiBuZXh0PU5VTEw7IAogICAgICAgIE5vZGUqIHByZXY9TlVMTDsKfTsgCgppbnQgbWFpbigpIAp7IAogICAgTm9kZSogZnJvbnQgPSBOVUxMOyAKICAgIE5vZGUqIHJlYXIgPSBOVUxMOwoJdW5vcmRlcmVkX21hcDxpbnQsIE5vZGUqID4gdW1hcDsKCWludCBOLFE7CgljaW4gPj4gTiA+PiBROwoJZm9yKGludCBpPTA7IGkgPCBOOyBpKyspCgl7CgkgICAgaW50IHRlbXA7CgkgICAgY2luID4+IHRlbXA7CgkgICAgTm9kZSogZmFrZSA9IG5ldyBOb2RlKCk7CgkgICAgZmFrZS0+ZGF0YSA9IHRlbXA7CgkgICAgaWYoZnJvbnQgPT0gTlVMTCAmJiByZWFyID09IE5VTEwgJiYgdW1hcC5zaXplKCkgPT0gMCkKCSAgICB7CgkgICAgICAgIGZyb250PWZha2U7CgkgICAgICAgIHJlYXI9ZmFrZTsKCSAgICB9CgkgICAgZWxzZQoJICAgIHsKCSAgICAgICAgcmVhci0+bmV4dD1mYWtlOwoJICAgICAgICBmYWtlLT5wcmV2PXJlYXI7CgkgICAgICAgIHJlYXI9ZmFrZTsKCSAgICB9CgkgICAgdW1hcFt0ZW1wXT1mYWtlOwoJfQoJZm9yKGludCBpPTA7IGkgPCBROyBpKyspCgl7CgkgICAgaW50IHR5OwoJICAgIGNpbiA+PiB0eTsKCSAgICBpZih0eSA9PSAzKQoJICAgIHsKCSAgICAgICAgaWYocmVhciA9PSBOVUxMICYmIGZyb250ID09IE5VTEwgJiYgdW1hcC5zaXplKCkgPT0gMCkKCSAgICAgICAgewoJICAgICAgICAgICAgY291dDw8Ii0xXG4iOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UKCSAgICAgICAgewoJICAgICAgICAgICAgY291dDw8cmVhci0+ZGF0YTw8IlxuIjsKCSAgICAgICAgICAgIHVtYXAuZXJhc2UocmVhci0+ZGF0YSk7CgkgICAgICAgICAgICBpZihyZWFyID09IGZyb250KQoJICAgICAgICAgICAgewoJICAgICAgICAgICAgICAgIHJlYXIgPSBOVUxMOwoJICAgICAgICAgICAgICAgIGZyb250ID0gTlVMTDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UKCSAgICAgICAgICAgIHsKCSAgICAgICAgICAgICAgICBOb2RlKiBmYWtlPXJlYXI7CgkgICAgICAgICAgICAgICAgcmVhcj1yZWFyLT5wcmV2OwoJICAgICAgICAgICAgICAgIHJlYXItPm5leHQ9TlVMTDsKCSAgICAgICAgICAgICAgICBmYWtlLT5wcmV2PU5VTEw7CgkgICAgICAgICAgICAgICAgIGRlbGV0ZSBmYWtlOwoJICAgICAgICAgICAgICAgICAKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH0KCSAgICBlbHNlCgkgICAgewoJICAgICAgICBpbnQgdXBkYXRlOwoJICAgICAgICBjaW4+PnVwZGF0ZTsKCSAgICAgICAgaWYodHkgPT0gMSkKCSAgICAgICAgewoJICAgICAgICAgICAKCSAgICAgICAgICAgIGlmKHVtYXAuZmluZCh1cGRhdGUpID09IHVtYXAuZW5kKCkpCgkgICAgICAgICAgICB7CgkgICAgICAgICAgICAgICAgIE5vZGUqIGZha2UgPSBuZXcgTm9kZSgpOwogICAgCSAgICAgICAgICAgICBmYWtlLT5kYXRhID0gdXBkYXRlOwogICAgCSAgICAgICAgICAgICB1bWFwW3VwZGF0ZV09ZmFrZTsKCSAgICAgICAgICAgICAgICBpZihmcm9udCA9PSBOVUxMICYmIHJlYXIgPT0gTlVMTCkKCSAgICAgICAgICAgICAgICB7CgkgICAgICAgICAgICAgICAgICAgIGZyb250PWZha2U7CgkgICAgICAgICAgICAgICAgICAgIHJlYXI9ZmFrZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZQoJICAgICAgICAgICAgICAgIHsKICAgIAkgICAgICAgICAgICAgICAgIGZha2UtPm5leHQgPSBmcm9udDsKICAgIAkgICAgICAgICAgICAgICAgIGZyb250LT5wcmV2ID0gZmFrZTsKICAgIAkgICAgICAgICAgICAgICAgIGZyb250ID0gZmFrZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlCgkgICAgICAgICAgICB7CgkgICAgICAgICAgICAgICAgY291dDw8Ii0xXG4iOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGVsc2UKCSAgICAgICAgewoJICAgICAgICAgICAgIGlmKHVtYXAuZmluZCh1cGRhdGUpID09IHVtYXAuZW5kKCkpCgkgICAgICAgICAgICAgewoJICAgICAgICAgICAgICAgICBjb3V0PDwiLTFcbiI7CgkgICAgICAgICAgICAgfQoJICAgICAgICAgICAgIGVsc2UKCSAgICAgICAgICAgICB7CgkgICAgICAgICAgICAgICAgIE5vZGUqIGZha2U7CgkgICAgICAgICAgICAgICAgIGZha2UgPSB1bWFwW3VwZGF0ZV07CgkgICAgICAgICAgICAgICAgIGlmKGZyb250ID09IHJlYXIpCgkgICAgICAgICAgICAgICAgIHsKCSAgICAgICAgICAgICAgICAgICAgICByZWFyID0gTlVMTDsKCSAgICAgICAgICAgICAgICAgICAgICBmcm9udCA9IE5VTEw7CgkgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgZWxzZSBpZihmYWtlID09IGZyb250KQoJICAgICAgICAgICAgICAgICB7CgkgICAgICAgICAgICAgICAgICAgICBmcm9udD1mcm9udC0+bmV4dDsKCSAgICAgICAgICAgICAgICAgICAgIGZha2UtPm5leHQ9TlVMTDsKCSAgICAgICAgICAgICAgICAgICAgIGZyb250LT5wcmV2PU5VTEw7CgkgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgZWxzZSBpZihmYWtlID09IHJlYXIpCgkgICAgICAgICAgICAgICAgIHsKCSAgICAgICAgICAgICAgICAgICAgIHJlYXI9cmVhci0+cHJldjsKCSAgICAgICAgICAgICAgICAgICAgIHJlYXItPm5leHQ9TlVMTDsKCSAgICAgICAgICAgICAgICAgICAgIGZha2UtPnByZXY9TlVMTDsKCSAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICBlbHNlCgkgICAgICAgICAgICAgICAgIHsKCSAgICAgICAgICAgICAgICAgICAgIGZha2UtPnByZXYtPm5leHQgPSBmYWtlLT5uZXh0OwoJICAgICAgICAgICAgICAgICAgICAgZmFrZS0+bmV4dC0+cHJldiA9IGZha2UtPnByZXY7CgkgICAgICAgICAgICAgICAgICAgICBmYWtlLT5uZXh0ID0gTlVMTDsKCSAgICAgICAgICAgICAgICAgICAgIGZha2UtPnByZXYgPSBOVUxMOwoJICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgIGRlbGV0ZSBmYWtlOwoJICAgICAgICAgICAgICAgICB1bWFwLmVyYXNlKHVwZGF0ZSk7CgkgICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfQoJfQp9