#include <stdio.h>#include <memory.h>#include <queue>#include <map>using namespace std;map<int, int> teamNo;map<int, int> teamOrder;map<int, int> teamCount;struct element{ int content; int teamOrder; int order; bool operator<(const element& e) const { if(teamOrder > e.teamOrder) return true; else if(teamOrder == e.teamOrder && order > e.order) return true; else return false; } element(int c, int t, int o) : content(c), teamOrder(t), order(o) { }};priority_queue<element> q;void init(int teams){ teamNo.clear(); teamOrder.clear(); while( !q.empty() ) q.pop(); int elements = 0; int content = 0; for(int i = 0; i != teams; i++) { scanf("%d", &elements); for(int j = 0; j != elements; j++) { scanf("%d", &content); teamNo[content] = i; } teamCount[i] = 0; }}void process(int teams, int scenario){ printf("Scenario #%dn", scenario); char op[8]; int content; int iOrder = -1; int iTeamOrder = -1; while(scanf("%s", op) && op[0] != 'S') { if(op[0] == 'E') { scanf("%d", &content); iOrder++; if(teamCount[ teamNo[content] ] == 0) { iTeamOrder++; teamOrder[ teamNo[content] ] = iTeamOrder; } teamCount[ teamNo[content] ]++; q.push( element(content, teamOrder[teamNo[content]], iOrder) ); } else { printf("%dn", q.top().content); teamCount[teamNo[q.top().content]]--; q.pop(); } } putchar('n');}int main(){ int teams; int scenario = 0; while(scanf("%d", &teams) && teams != 0) { scenario++; init(teams); process(teams, scenario); }}