이름과 사용자 아이디 짝짓기

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

FBI가 범죄자들이 연락 거점으로 쓰는 은신처를 감시하고 있다. 거점에서 빠져나가는 이메일을 해독하면 모든 메시지를 읽고 보낸 사람의 사용자 아이디를 확인할 수 있지만, 범죄자들은 아무 의미 없는 알파벳 문자열을 아이디로 쓰기 때문에 아이디만으로는 정체를 알 수 없다. 각 범죄자는 정확히 하나의 아이디만 사용하며, 서로 다른 범죄자가 같은 아이디를 쓰는 일은 없다.

FBI가 가진 유일한 추가 정보는 누가 은신처에 드나들었는지 기록한 출입 로그다. 메시지는 그 순간 은신처 안에 있는 사람만 보낼 수 있으므로, 어떤 아이디로부터 메시지가 가로채이면 그 아이디의 주인은 그때 은신처 안에 있던 사람 중 하나여야 한다. 출입 기록과 가로챈 메시지를 종합하면 아이디를 한 명의 이름으로 특정할 수 있는 경우가 많다.

각 범죄자에 대해, 로그만으로 그 사람의 사용자 아이디를 유일하게 결정할 수 있는지 판단하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스 앞에는 빈 줄이 하나 있으며, 연속한 두 테스트 케이스는 빈 줄로 구분된다.

각 테스트 케이스의 첫 줄에는 은신처를 사용하는 범죄자의 수 nn (1n201 \le n \le 20)이 주어진다. 다음 줄에는 nn개의 사용자 아이디가 공백 하나로 구분되어 주어진다(이 줄은 80자보다 길 수 있다).

그 뒤로는 시간 순서대로 로그 항목이 주어진다. 각 항목은 type arg 형식이다.

  • E arg — 이름이 arg인 범죄자가 은신처에 들어왔다.
  • L arg — 이름이 arg인 범죄자가 은신처에서 나갔다.
  • M arg — 사용자 아이디 arg로부터 메시지가 가로채였다.

Q 한 글자만 있는 줄은 로그의 끝을 뜻한다. 로그가 시작될 때 은신처는 비어 있다. 모든 아이디가 로그에 등장하지는 않을 수 있지만, 모든 범죄자의 이름은 로그에 적어도 한 번은 등장함이 보장된다. 모든 이름과 아이디는 소문자 알파벳으로만 이루어지며 길이는 최대 20이다.

출력

각 테스트 케이스마다 nn줄을 출력하며, 범죄자 이름의 사전순으로 정렬한다. 각 줄은 name:userid 형식이다. 여기서 userid는 로그로 유일하게 결정되는 그 범죄자의 사용자 아이디이며, 결정할 수 없으면 ???를 출력한다. 연속한 두 테스트 케이스의 출력은 빈 줄로 구분한다.