큐(Queue)와 우선순위 큐(Priority Queue)는 대부분의 컴퓨터 과학자에게 익숙한 자료구조입니다. 하지만 팀 큐(Team Queue)는 일상에서 자주 볼 수 있음에도 상대적으로 덜 알려져 있습니다. 예를 들어 점심시간에 학생 식당 앞에 늘어선 줄이 바로 팀 큐입니다.
팀 큐에서는 각 원소가 하나의 팀에 속합니다. 새 원소가 큐에 들어올 때, 먼저 큐의 앞에서 뒤로 훑어보며 같은 팀의 원소(팀원)가 이미 큐에 있는지 확인합니다. 팀원이 있다면 그 팀원들의 바로 뒤에 들어갑니다. 팀원이 없다면 큐의 맨 뒤로 들어가 새로운 마지막 원소가 됩니다. 원소를 꺼내는 것(dequeue)은 일반 큐와 같아서, 팀 큐에 놓인 순서대로 앞에서부터 처리합니다.
이러한 팀 큐를 시뮬레이션하는 프로그램을 작성하세요.
입력은 하나 이상의 테스트 케이스로 이루어집니다. 각 테스트 케이스는 팀의 수 $t$ ($1 \le t \le 1000$)로 시작합니다. 이어서 $t$개의 팀 설명이 주어지며, 각 팀 설명은 그 팀에 속한 원소의 개수와 그 원소들로 이루어집니다. 원소는 $0$ 이상 $999999$ 이하의 정수이고, 한 팀은 최대 $1000$개의 원소를 가질 수 있습니다.
그 다음에는 명령 목록이 이어집니다. 명령은 세 가지입니다.
ENQUEUE x — 원소 $x$를 팀 큐에 넣습니다.DEQUEUE — 맨 앞의 원소를 처리하여 큐에서 제거합니다.STOP — 테스트 케이스의 끝을 나타냅니다.$t$의 값이 $0$이면 입력이 끝납니다.
주의: 한 테스트 케이스에는 최대 200000개의 명령이 포함될 수 있으므로, 넣기와 꺼내기가 모두 상수 시간에 이루어지도록 효율적으로 구현해야 합니다.
각 테스트 케이스마다 먼저 Scenario #k 형식의 줄을 출력합니다. 여기서 $k$는 테스트 케이스의 번호이며 $1$부터 시작합니다. 그런 다음 각 DEQUEUE 명령에 대해 꺼낸 원소를 한 줄에 하나씩 출력합니다. 서로 다른 테스트 케이스의 출력 사이에는 빈 줄 하나를 넣어 구분합니다.