빠른 응답

시간 제한1초메모리 제한128 MB

문제

조는 컴퓨터 게임을 좋아한다. 지금 그는 요새 도시들이 표시된 커다란 지도를 앞에 두고 있다. 상대는 명령을 내려 도시들을 연결하거나 끊을 수 있다.

도시들을 여러 개의 그룹으로 묶어 관리한다고 생각하자. 두 도시는 같은 그룹에 속해 있을 때 서로 연결되어 있다고 한다. 처음에는 모든 도시가 각자 혼자만의 그룹에 속해 고립되어 있다.

  • 연결 명령은 지정한 두 도시가 속한 두 그룹을 하나의 그룹으로 합친다. 따라서 어느 한 도시와 직접 연결되면, 그 도시가 속한 그룹의 모든 도시와도 연결된다.
  • 끊기 명령은 지정한 도시 하나만 자신이 속한 그룹에서 빼내어 다시 고립시킨다. 같은 그룹에 있던 나머지 도시들은 여전히 서로 연결된 채로 남는다. 빠져나온 도시는 이전 연결 기록을 전혀 기억하지 못하므로, 다시 연결하려면 명령을 새로 내려야 한다.

상대의 명령들 사이에는 "도시 $i$와 도시 $j$는 연결되어 있는가?"라는 질문이 등장한다. 각 질문에 대해 "예"라고 답한 횟수와 "아니오"라고 답한 횟수를 세는 프로그램을 작성하여라.

입력

입력은 여러 개의 데이터 집합으로 이루어질 수 있으며, 각 데이터 집합은 하나의 지도와 그에 대한 명령들을 나타낸다. 각 데이터 집합의 형식은 다음과 같다.

  • 첫 줄에 도시의 수 $N$ ($N \le 10000$).
  • 이어서 한 줄에 하나씩 명령이 주어진다.
    • c i j : 도시 $i$와 도시 $j$가 속한 두 그룹을 합친다. ($1 \le i, j \le N$)
    • d i : 도시 $i$를 자신의 그룹에서 빼내어 고립시킨다. ($1 \le i \le N$)
    • q i j : 도시 $i$와 도시 $j$가 연결되어 있는지 묻는 질문이다. ($1 \le i, j \le N$)
    • e : 현재 데이터 집합의 명령 목록이 끝났음을 의미한다.

c, d, q 명령은 어떤 순서로도 나타날 수 있으며, 각 명령은 주어진 순간의 현재 상태를 기준으로 처리된다. 파일이 끝날 때까지 여러 데이터 집합이 이어질 수 있다.

출력

각 데이터 집합마다, 그 집합의 모든 q 질문 중 "예"로 답한 횟수 $N_1$과 "아니오"로 답한 횟수 $N_2$를 한 줄에 출력한다. 두 수는 공백, 쉼표, 공백(,)으로 구분하여 N_1 , N_2 형식으로 적는다. 예를 들어 아래 예제의 데이터 집합에서는 "예"가 2번, "아니오"가 2번이므로 2 , 2를 출력한다.