#include <iostream> #include <map> #include <cstring> #include <queue> #include <stdio.h> using namespace std; int main() { int t,n,m,w; char a[20]; bool visit[1010]; int cases=1; while(scanf("%d",&t)==1&&t) { map<int,int> team;//用map快速查找元素是否在队中 queue<int> que,q[1010];//que是表示大的队列,相当于列.而q[]是相当于大队列的一个分支,相当于行 memset(visit,false,sizeof(visit)); printf("Scenario #%d\n",cases++); for(int i=0; i<t; i++) { scanf("%d",&n); while(n--) { scanf("%d",&m); team[m]=i;//标记 } } while(scanf("%s",a)==1) { if(strcmp(a,"STOP")==0) { printf("\n"); break; } else if(strcmp(a,"ENQUEUE")==0) { scanf("%d",&w); q[team[w]].push(w);//入队 if(visit[team[w]]==false)//如果元素不在队中,添加到总队列的末尾 { que.push(team[w]); visit[team[w]]=true;//标记为已访问 } } else { printf("%d\n",q[que.front()].front()); q[que.front()].pop(); if(q[que.front()].empty())//如果行队列为空.将整个队列删除 { visit[que.front()]=false; que.pop(); } } } } return 0; }