#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define maxn 100010
#define maxm 310
int head,tail,num[maxn],nex[maxn],grp[maxn],tl[maxm],flag[maxm];
int n,m,t;
void init()
{
head=-1;tail=-1;
memset(flag,0,sizeof(flag));
for(int i=0;i<n;i++)
{
int p;
cin>>p;
num[i]=i;
grp[i]=p;
}
}
void pushh(int data)
{
if(head==-1)
{
head=data;
tail=data;
nex[data]=-1;
}
else if(!flag[grp[data]])
{
nex[tail]=data;
tail=data;
nex[data]=-1;
}
else
{
int prenode=tl[grp[data]];
if(nex[prenode]==-1)
tail=data;
nex[data]=nex[prenode];
nex[prenode]=data;
}
tl[grp[data]]=data;
flag[grp[data]]++;
}
void popp()
{
cout<<head<<endl;
flag[grp[head]]--;
head=nex[head];
}
int main()
{
cin>>n>>m;
init();
cin>>t;
for(int i=1;i<=t;i++)
{
char p[10];
scanf("%s",p);
if(p[1]=='u')
{
int ber;
cin>>ber;
pushh(ber);
}
else
popp();
}
return 0;
}