이런 문제는 유치원생도 해결할 수 있어

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

문제

도영이는 자신이 매우 똑똑하다고 생각한다. 동진이는 그런 도영이의 콧대를 꺾으려고 문제 하나를 준비했다.

  • 동진이가 물었다. "집합의 문법을 나에게 설명해 줄 수 있어?"
  • 도영이가 답했다. "당연하지! 집합은 두 개의 꺾쇠 괄호 { }로 둘러싸인 리스트를 뜻해. 리스트는 비어 있을 수도 있고, 원소로 다른 집합이나 주어진 알파벳의 한 글자를 가질 수 있어."
  • "그럼 내가 어떤 문자열을 주면, 그게 문법적으로 집합이 맞는지 판별할 수 있어?"
  • "당연하지, 이런 문제는 유치원생도 해결할 수 있어."

동진이는 집합의 문법을 다음과 같이 정의했다. (이것은 실제 집합의 정의가 아니라, 도영이를 골탕 먹이려고 만든 것일 뿐이다.)

Set ::= "{" Elementlist "}"
Elementlist ::= <empty> | List
List ::= Element | Element "," List
Element ::= Atom | Set
Atom ::= "{" | "}" | ","

여기서 \<empty>는 리스트가 비어 있을 수도 있음을 의미한다.

핵심은, 원소로 쓸 수 있는 알파벳 한 글자가 하필 문법에서 중요한 역할을 하는 기호 {, }, ,와 똑같다는 점이다. 이 겹침 때문에 어떤 문자열이 집합인지 판별하는 일은 생각보다 까다롭다. 위 문법에 따라 주어진 문자열이 올바른 집합인지 효율적으로 판별하는 프로그램을 작성하라.

입력

첫째 줄에 판별할 문자열의 개수 $N$이 주어진다.

둘째 줄부터 $N$개의 줄에 걸쳐, 문법적으로 집합인지 판별해야 하는 문자열이 한 줄에 하나씩 주어진다. 각 문자열의 길이는 $1$ 이상 $200$ 이하이며, 오직 {, }, , 세 문자로만 이루어져 있다.

출력

각 문자열에 대해 한 줄씩 출력한다. $i$번째($i$는 $1$부터 시작한다) 문자열이 문법적으로 집합이면 Word #i: Set을, 집합이 아니면 Word #i: No Set을 출력한다.