#include <iostream>
#include <cstdio>
#include <algorithm>
#include <set>
#include <map>
#include <string>
using namespace std;
//英语 抄博友程序 字符串处理巧妙 upper_bound使用 没掌握
struct book{
string title;
string author;
};
bool operator<(const book& a, const book& b)//抄博友程序 没掌握 作者排名优先
{
if(a.author==b.author)
{
return a.title>b.title;//抄博友程序 与upper_bound和set联用 没掌握
}else
{
return a.author>b.author;
}
}
set<book> lib;
set<book> desk;
map<string,book> mp;
int main()
{
//freopen("1886.txt","r",stdin);
string s;
while(getline(cin,s),s!="END")//抄博友程序
{
//cout<<s<<endl;
int pos=s.find(" by ");//抄博友程序
string title=s.substr(0,pos);//抄博友程序
string author=s.substr(pos+4);
book shu;
shu.title=title;
shu.author=author;
mp[title]=shu;
lib.insert(shu);
}
while(getline(cin,s),s!="END")
{
if(s.substr(0,6)=="BORROW")//抄博友程序
{
//cout<<"hi0"<<endl;
string title=s.substr(7);//抄博友程序
lib.erase(mp[title]);
}else if(s.substr(0,6)=="RETURN")
{
//cout<<"hi1"<<endl;
string title=s.substr(7);
desk.insert(mp[title]);//抄博友程序
}else
{
//cout<<"hi2"<<endl;
for(set<book>:: reverse_iterator it=desk.rbegin();it!=desk.rend();it++)
{
cout<<"Put "<<it->title;
if(lib.upper_bound(*it)==lib.end())//没掌握
{
cout<<" first"<<endl;
}else
{
cout<<" after "<<lib.upper_bound(*it)->title<<endl;
}
lib.insert(*it);//抄博友程序
}
cout<<"END"<<endl;//抄博友程序
desk.clear();//抄博友程序
}
}
return 0;
}