#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e8+10;
map<string,bool>mp;
map<string,int>na;
map<int,string>it;
struct node{
int pre;
int nxt;
int x;
}a[maxn];
int w[maxn];
signed main(){
int n;
cin>>n;
int g1=-1,g2=-1;
int cnt=0;
int bi=0;
for(int i=1;i<=n;i++) a[i].pre=i-1;
for(int i=0;i<n;i++) a[i].nxt=i+1;
a[n].nxt=1;
a[1].pre=n;
int mo=n,head=1;
while(n--){
string s;
cin>>s;
if(s=="arrive"){
string ss;
cin>>ss;
if(mp[ss]) cout<<"Error\n";
else {
cout<<"OK\n";
mp[ss]=true;
cnt++;
if(na[ss]==0) na[ss]= ++bi,it[bi]=ss;
a[a[mo].nxt].x=na[ss];
a[a[mo].nxt].pre=mo;
mo=a[mo].nxt;
w[na[ss]]=mo;
}
}
if(s=="leave"){
string ss;
cin>>ss;
if(!mp[ss]||g1==na[ss]||g2==na[ss])cout<<"Error\n";
else {
cout<<"OK\n";
mp[ss]=false;
cnt--;
int wh=w[na[ss]];
a[a[wh].pre].nxt=a[wh].nxt;
a[a[wh].nxt].pre=a[wh].pre;
if(wh==head) head=a[wh].nxt;
if(mo==wh) mo=a[wh].pre;
}
}
if(s=="start"){
if(cnt==0) cout<<"Error\n";
else {
if(g1!=-1) {
head=a[w[g1]].nxt;
a[w[g1]].nxt=a[mo].nxt;
a[mo].nxt=w[g1];
a[w[g1]].pre=mo;
mo=w[g1];
}
if(g2!=-1) {
head=a[w[g2]].nxt;
a[w[g2]].nxt=a[mo].nxt;
a[mo].nxt=w[g2];
a[w[g2]].pre=mo;
mo=w[g2];
}
g1=a[head].x;
cout<<it[g1]<<' ';
if(cnt==1) {
g2=-1;
cout<<'\n';
continue;
}
g2=a[a[head].nxt].x;
cout<<it[g2]<<'\n';
}
}
}
return 0;
}