
#include <iostream>
#include <map>
using namespace std;
struct ips{
int ip,time,state;
string zy;
void creatip(int i){ip=i;state=0;time=0;}
};
int main()
{
int N,td,tmax,tmin;
string h;
scanf("%d%d%d%d",&N,&td,&tmax,&tmin);
cin>>h;
ips ip[N+1];
for(int i=1;i<=N;i++){
ip[i].creatip(i);
}
int cs;
scanf("%d",&cs);
map<string,int> mp;
int ti,ipv,timev;
string fhost,jhost,type;
for(int i=0;i<cs;i++){
cin>>ti>>fhost>>jhost>>type>>ipv>>timev;
mp[fhost]=0;
if(jhost!=h&&jhost!="*"){
if(type!="REQ")continue;
}
if(type!="DIS"&&type!="REQ")continue;
if(jhost=="*"&&type!="DIS")continue;
if(jhost==h&&type=="DIS")continue;
for(int j=1;j<=N;j++){
if(ip[j].state==1&&ti>=ip[j].time){
ip[j].state=0; ip[j].zy=""; ip[j].time=0;
}
if(ip[j].state==2&&ti>=ip[j].time){
ip[j].state=3; ip[j].time=0;
}
}
if(type=="DIS"){
int getip=0;
for(int k=1;k<=N;k++){
if(ip[k].zy==fhost){
getip=ip[k].ip;
break;
}
}
if(getip==0){
for(int k=1;k<=N;k++){
if(ip[k].state==0){
getip=ip[k].ip;
break;
}
}
}
if(getip==0){
for(int k=1;k<=N;k++){
if(ip[k].state==3){
getip=ip[k].ip;
break;
}
}
}
if(getip!=0){
ip[getip].state=1;
ip[getip].zy=fhost;
if(timev==0){
ip[getip].time=ti+td;
}
else if(timev>tmax+ti)ip[getip].time=tmax+ti;
else if(timev<tmin+ti)ip[getip].time=tmin+ti;
else ip[getip].time=timev;
cout<<h<<" "<<fhost<<" OFR "<<getip<<" "<<ip[getip].time<<endl;
}
}
if(type=="REQ"){
if(jhost!=h){
for(int k=1;k<=N;k++){
if(ip[k].zy==fhost&&ip[k].state==1){
ip[k].state=0;
ip[k].zy="";
ip[k].time=0;
}
}
}
else{
if(ipv<=N&&ip[ipv].zy==fhost){
ip[ipv].state=2;
if(timev==0){
ip[ipv].time=ti+td;
}
else if(timev>tmax+ti)ip[ipv].time=tmax+ti;
else if(timev<tmin+ti)ip[ipv].time=tmin+ti;
else ip[ipv].time=timev;
cout<<h<<" "<<fhost<<" ACK "<<ipv<<" "<<ip[ipv].time<<endl;
}
else{
cout<<h<<" "<<fhost<<" NAK "<<ipv<<" "<<0<<endl;
}
}
}
}
return 0;
}