#include <iostream>
#include<algorithm>
#include<iomanip>
#include<sstream>
#include<vector>
#include<bits/stdc++.h>
#include<algorithm>
#include<string>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
struct BOOK
{
string name;
string author;
BOOK(string s,string s1)
{
name=s;
author=s1;
}
friend bool operator <(BOOK a,BOOK b)
{
if(a.author==b.author)
{
if(a.name<b.name)
return true;
else return false;
}
else
return a.author<b.author;
}
};
vector<BOOK> cnt;
string find_author(string name)
{
string a1;
for(vector<BOOK>::iterator it=cnt.begin(); it<cnt.end(); it++)
{
if((it->name)==name)
{
a1=(it->author);
break;
}
}
return a1;
}
map<BOOK,int> flag;
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
string str;
while(getline(cin,str))
{
if(str=="END")
break;
else
{
flag[BOOK(str.substr(1,str.find("by")-3),str.substr(str.find("by")+3,str.size()-str.find("by")-3))]=0;
cnt.push_back(BOOK(str.substr(1,str.find("by")-3),str.substr(str.find("by")+3,str.size()-str.find("by")-3)));
}
sort(cnt.begin(),cnt.end());
}
string cmd;
while(getline(cin,cmd))
{
vector<BOOK> cnt1;
if(cmd[0]=='E')
break;
else if(cmd[0]=='B')
{
flag[BOOK(cmd.substr(8,cmd.size()-9),find_author(cmd.substr(8,cmd.size()-9)))]=1;
}
else if(cmd[0]=='R')
{
flag[BOOK(cmd.substr(8,cmd.size()-9),find_author(cmd.substr(8,cmd.size()-9)))]=2;
}
else
{
for(vector<BOOK>::iterator it=cnt.begin(); it<cnt.end(); it++)
{
if(flag[(*it)]==2)
{
int k=1;
for(vector<BOOK>::iterator it1=it; it1>=cnt.begin(); it1--)
{
if(flag[(*it1)]==0)
{
cout<<"Put \""<<it->name<<"\" after \""<<it1->name<<"\""<<endl;
flag[(*it)]=0;
k=0;
break;
}
}
if(k==1)
{
cout<<"Put \""<<it->name<<"\" first"<<endl;
flag[(*it)]=0;
}
}
}
cout<<"END"<<endl;
}
}
}
#include<algorithm>
#include<iomanip>
#include<sstream>
#include<vector>
#include<bits/stdc++.h>
#include<algorithm>
#include<string>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
struct BOOK
{
string name;
string author;
BOOK(string s,string s1)
{
name=s;
author=s1;
}
friend bool operator <(BOOK a,BOOK b)
{
if(a.author==b.author)
{
if(a.name<b.name)
return true;
else return false;
}
else
return a.author<b.author;
}
};
vector<BOOK> cnt;
string find_author(string name)
{
string a1;
for(vector<BOOK>::iterator it=cnt.begin(); it<cnt.end(); it++)
{
if((it->name)==name)
{
a1=(it->author);
break;
}
}
return a1;
}
map<BOOK,int> flag;
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
string str;
while(getline(cin,str))
{
if(str=="END")
break;
else
{
flag[BOOK(str.substr(1,str.find("by")-3),str.substr(str.find("by")+3,str.size()-str.find("by")-3))]=0;
cnt.push_back(BOOK(str.substr(1,str.find("by")-3),str.substr(str.find("by")+3,str.size()-str.find("by")-3)));
}
sort(cnt.begin(),cnt.end());
}
string cmd;
while(getline(cin,cmd))
{
vector<BOOK> cnt1;
if(cmd[0]=='E')
break;
else if(cmd[0]=='B')
{
flag[BOOK(cmd.substr(8,cmd.size()-9),find_author(cmd.substr(8,cmd.size()-9)))]=1;
}
else if(cmd[0]=='R')
{
flag[BOOK(cmd.substr(8,cmd.size()-9),find_author(cmd.substr(8,cmd.size()-9)))]=2;
}
else
{
for(vector<BOOK>::iterator it=cnt.begin(); it<cnt.end(); it++)
{
if(flag[(*it)]==2)
{
int k=1;
for(vector<BOOK>::iterator it1=it; it1>=cnt.begin(); it1--)
{
if(flag[(*it1)]==0)
{
cout<<"Put \""<<it->name<<"\" after \""<<it1->name<<"\""<<endl;
flag[(*it)]=0;
k=0;
break;
}
}
if(k==1)
{
cout<<"Put \""<<it->name<<"\" first"<<endl;
flag[(*it)]=0;
}
}
}
cout<<"END"<<endl;
}
}
}