#include<bits/stdc++.h>
using namespace std;
struct node
{
int name,tame;
};
queue<node>a;
string file[100005],op[100005];
int t2[100005],t[100005],maxt=0;
int n,k;
int dqft=0,dqtz=0,tz=0,cntf=0,i=1;
bool dqfl=false;
string dafi;
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>t[i];
cin>>op[i];
if(op[i]=="New")
{
cin>>file[i]>>t2[i];
}
else if(op[i]=="INSERT")
{
cin>>file[i]>>t2[i];
}
else if(op[i]=="NEXT")
{
file[i]="next";
t2[i]=0;
}
else
{
file[i]="stop";
t2[i]=0;
}
maxt=max(maxt,t2[i]);
}
while(tz!=maxt||(!a.empty()))
{
tz++;
if(t[i]==tz)
{
if(op[i]=="New")
{
a.push({file[i],t2[i]});
}
else if(op[i]=="INSERT")
{
if(dqfl==true)
{
a.push.name(file[i]);
a.push.tame(t2[i]);
}
dqfi=file[i];
dqtz=t2[i];
dqft=t2[i];
}
else if(op[i]=="NEXT")
{
if(dqfl==true)
{
a.push.name(file[i]);
a.push.tame(t2[i]);
}
dqfi=a.front().name;
dqtz=a.front().tame;
dqft=dqtz;
a.pop();
}
else
{
dqfi=a.front().name;
dqtz=a.front().tame;
dqft=dqtz;
a.pop();
}
i++;
}
if(dqfl==true)
{
if(dqft>0)dqft--;
if(dqtz-dqft>k)
{
a.push({dqfi,dqtz});
dqft=a.front().tame;
dqtz=dqft;
dqfi=a.front().name;
dqfl=true;
a.pop();
}
}
else
{
dqft=a.front().tame;
dqtz=dqft;
dqfi=a.front().name;
dqfl=true;
a.pop();
}
if(dqft==0)
{
dqfl=false;
cout<<dqfi<<" "<<tz<<endl;
a.pop();
dqft=a.front().tame;
dqtz=dqft;
dqfi=a.front().name;
dqfl=true;
a.pop();
}
}
return 0;
}