#include <iostream>
#include <set>
#include <cstdio>
#include <string>
#include <vector>
using namespace std;
//读英语 看博友分析 抄博友代码 模拟
//for example 1 4 means that the cost of the first and fourth removed processes will be displayed
int a[10008];
int main()
{
while(1)
{
int n,m;
cin>>n;
if(cin.eof()==1)
{
break;
}
cin>>m;
for(int i=0;i<m;i++)
{
cin>>a[i];
}
multiset<int> ms;
vector<int> ve;
int p=1;
while(1)
{
string s;
cin>>s;
if(s=="a")
{
int x;
cin>>x;
ms.insert(x);
}else if(s=="r")
{
if(ms.empty())
{
cout<<-1<<endl;//抄博友程序
}else
{
if(p==1)
{
multiset<int>::iterator it=ms.begin();
ve.push_back(*it);//抄博友程序
ms.erase(*it);
}else
{
multiset<int>::reverse_iterator rit=ms.rbegin();
ve.push_back(*rit);
ms.erase(*rit);//抄博友程序
}
}
}else if(s=="p")
{
int x;
cin>>x;
p=x;
}else if(s=="e")
{
break;
}
}
for(int i=0;i<m;i++)
{
cout<<ve[a[i]-1]<<endl;
}
cout<<endl;
}
return 0;
}