//使用queue处理队列,使用queue【】 存储队列
//注意 The outputs of two consecutive cases will be separated by a blank line.表示头尾无空格
//花了四个小时啊
//读取case数
//初始化//读取程序数建立que[] 保留每个程序 并用deque保留等待队列,
//执行等待队列,使用queue的block队列
#include<iostream>
#include<cstdio>
#include<map>
#include<deque>
#include<queue>
#include<string>
using namespace std;
int case1,a,b,c,d,e,f,g;
string s;
deque<string> que[1000];
deque<int> dqu;
map<char,int> mp;
int jud;
queue<int> block;
int run(int r){
int t=g;
// cout<<"Test t "<<t<<endl;
while(t>0){
string s1=que[r].front();
// cout<<"s1 test"<<" "<<s1<<endl;
if(s1[2]=='='){
if(s1.size()==6)
mp[s1[0]]=10*(s1[4]-'0')+(s1[5]-'0');
else
mp[s1[0]]=s1[4]-'0';
// cout<<"test"<<s1[0]<<" "<<mp[s1[0]]<<endl;
t-=b;
que[r].pop_front();
}
else if(s1[2]=='i'){
printf("%d: %d\n",r,mp[s1[6]]);
t-=c;
que[r].pop_front();
}
else if(s1[2]=='c'){
if(jud==1){
return 2;
}
jud=1;
t-=d;
que[r].pop_front();
}
else if(s1[2]=='l'){
jud=0;
if(block.size()){
dqu.push_front(block.front());
block.pop();
}
t-=e;
que[r].pop_front();
}
else if(s1[2]=='d'){
return 1;
}
}
return 0;
}
void display(){
for(int i=1;i<=a;i++){
for(deque<string>::iterator it=que[i].begin();it!=que[i].end();it++){
cout<<*it<<endl;
}
}
}
int main(){
cin>>case1;
while(case1--){
jud=0;
cin>>a>>b>>c>>d>>e>>f>>g;
getchar();
dqu.clear();
mp.clear();
while(!block.empty())block.pop();
for(int i=1;i<=a;i++)que[i].clear();
for(int i=1;i<=a;i++){
while(getline(cin,s)&&s[2]!='d'){
que[i].push_back(s);
}
que[i].push_back(s);
dqu.push_back(i);
}
// display();
while(!dqu.empty()){
int front=dqu.front();
dqu.pop_front();
// printf("test %d\n",front);
// cout<<que[front].front();
int k=run(front);
// cout<<"jfaoids"<<endl;
if(k==0)dqu.push_back(front);
else if(k==2)block.push(front);
// for(deque<int>::iterator it=dqu.begin();it!=dqu.end();it++){
// cout<<*it<<" ";
// }
// cout<<endl;
}
if(case1)cout<<endl;
}
return 0;
}