#include <iostream>
using namespace std;
struct node
{
pair<int,int> val;
node *prev,*next;
};
class chain
{
public:
node *head,*rear;
void build()
{
node *q;
q = new node;
head = rear = q;
q->prev = q->next = NULL;
q->val = {-114514,-1919810};
}
void insert(pair<int,int> x)
{
if(head == rear && head->val.first == -114514 && head->val.second == -1919810)
{
head->val = x;
return;
}
for(node* i = head; i->next != NULL; i = i->next)
{
if(i->val.second == x.second)
{
node* z;
z = new node;
z->val = x;
z->next = i->next;
z->prev = i;
z->next->prev = z;
i->next = z;
return;
}
}
node* z;
z = new node;
z->val = x;
rear->next = z;
z->prev = rear;
z->next = NULL;
rear = z;
return;
}
void pop()
{
if(head == rear)
{
head->val = {-114514,-1919810};
return;
}
head = head->next;
head->prev->next = NULL;
delete (head->prev);
head->prev = NULL;
}
};
int main()
{
int a,b;
cin >> a >> b;
pair<int,int> c[a];
int d;
for(int i = 0; i < a; i++)
{
cin >> d;
c[i] = {i,d};
}
chain v;
v.build();
cin >> d;
string e;
int f;
for(int i = 1; i <= d; i++)
{
cin >> e;
if(e == "pop")
{
cout << (v.head->val.first) << endl;
v.pop();
}
else
{
cin >> f;
v.insert(c[f]);
}
}
return 0;
}
console.log("反正我也找不出错 QAQ");