/*是一道优先队列的模拟题,priority_queue<Type,containner,functional> array[]形式其中Type为数据类型,可以自己定义,本题为patient;
container为容器,一般的写法为vector<type>,本题为vector<patient>;function为比较形式,所以这题必须根据题目的要求写一个struct cmp;
*/
#include <iostream>
#include<cstdio>
#include<cstring>
#include<queue>//优先队列的头文件
#include<algorithm>
using namespace std;
struct patient//定义病人身份
{
int priv;
int num;
}p[1000];
struct cmp//按照题意对队列排序,a和b位置不能换.
{
bool operator()(patient &a,patient &b)//重载
{
if(a.priv<b.priv)
return true;
else if(a.priv==b.priv&&a.num>b.num)
return true;
else
return false;
}
};//“;”不能丢。
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
priority_queue<patient,vector<patient>,cmp> doc[4];//优先队列
int v=1;
char s[10];
while(n--)
{
cin>>s;
if(s[0]=='I')
{
int a,b;
cin>>a>>b;
p[v].num=v;
p[v].priv=b;
doc[a].push(p[v]);
v++;
}
else
{
int a;
cin>>a;
if(doc[a].empty())
cout<<"EMPTY"<<endl;
else
{
cout<<doc[a].top().num<<endl;
doc[a].pop();
}
}
}
}
return 0;
}