분기기 조작 지시서

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

문제

잉그리드는 큰 기차역의 역장이고, 여러 업무 가운데 열차를 알맞은 승강장으로 보내는 일도 맡는다. 역에는 입구가 하나 있고, 열차를 다른 분기기나 승강장으로 보내는 분기기가 여러 개 있다.

분기기에는 들어오는 선로가 하나, 나가는 선로가 둘 있다. 승강장에는 들어오는 선로가 하나 있고, 역 입구에는 나가는 선로가 하나 있다. 나가는 선로는 각각 들어오는 선로 하나와 이어지고, 그 반대도 마찬가지다. 모든 분기기와 승강장은 역 입구에서 갈 수 있다.

승강장 쪽 선로는 막혀 있고, 열차는 승강장에 도착하는 즉시 사라진다고 본다.

매일 아침 잉그리드는 시간표를 보고 어떤 분기기를 언제 바꿀지 적은 조작 지시서를 만든다. 이 일을 대신 해 주는 프로그램을 작성하라.

입력

첫 줄에 역에 있는 분기기와 승강장의 개수 nn이 주어진다 (3n513 \le n \le 51).

다음 nn개 줄 가운데 ii번째 줄은 번호가 ii인 분기기 또는 승강장을 설명한다. 줄은 승강장이면 문자 p로, 분기기면 문자 s로 시작한다. 이어서 정수 qiq_i가 주어지는데, 들어오는 선로가 이어진 분기기의 번호이고 역 입구와 이어져 있으면 0이다 (0qi<i0 \le q_i < i). 승강장 줄에는 마지막으로 승강장 이름인 알파벳 소문자 하나가 더 주어지며, 이름은 서로 다르다.

열차가 이어진 두 분기기 사이, 또는 분기기와 승강장 사이를 지나는 데 정확히 1분이 걸린다. 역 입구와 첫 분기기 사이도 1분이다. 즉 시각 aa에 역 입구에 있던 열차는 시각 a+1a+1에 입구와 이어진 분기기에 있다. 아침에 모든 분기기는 번호가 더 작은 쪽으로 열차를 보내도록 맞춰져 있다.

다음 줄에 시간표에 있는 열차의 수 mm이 주어진다 (1m10001 \le m \le 1000). 이어지는 mm개 줄에는 정수 aia_i와 문자 pip_i가 주어진다 (0ai100000 \le a_i \le 10000, ai>ai1a_i > a_{i-1}). aia_i는 열차가 역 입구에 도착하는 시각이고 단위는 분이며, pip_i는 그 열차가 가야 할 승강장의 이름이다.

출력

첫 줄에 지시서에 담긴 명령의 개수 cc를 출력한다. 이어지는 cc개 줄에 명령을 하나씩 정수 두 개 sis_itit_i로 출력한다 (1sin1 \le s_i \le n, 0ti1090 \le t_i \le 10^9). 분기기 sis_iti1t_i-1분과 tit_i분 사이에 반대 방향으로 바꾼다는 뜻이다.

정답으로 인정하는 지시서는 하나뿐이다. 다음 규칙을 그대로 따르라.

  • 모든 열차가 목적지 승강장에 도착한다.
  • 명령의 개수 cc는 그 조건에서 가능한 가장 작은 값이다.
  • 각 명령의 시각은 가능한 가장 늦은 시각이다. 즉 어떤 분기기를 바꾸는 시각은, 바뀐 방향이 필요한 열차가 그 분기기에 도착하는 시각과 같다.
  • 명령은 시각 tit_i의 오름차순으로 출력하고, 시각이 같으면 분기기 번호의 오름차순으로 출력한다.

필요한 명령이 하나도 없으면 첫 줄에 0만 출력한다.