트리 탐색기 (Easy)
면접 대비시간 제한1초메모리 제한1024 MB
폴더 트리에서 펼치기와 접기 명령으로 보이는 목록을 바꾸고, 커서를 옮길 때마다 커서가 가리키는 폴더 번호를 출력합니다.
문제
당신은 폴더 구조를 손쉽게 탐색할 수 있는 트리 탐색기 기능을 개발하고 있습니다.
폴더에는 번부터 번까지 번호가 붙어 있습니다. 폴더는 트리 형태의 계층 구조를 이루며, 다른 폴더를 하위 폴더로 가질 수 있습니다. 어떤 폴더가 포함하는 폴더란, 그 폴더의 하위 폴더와 하위 폴더가 포함하는 폴더를 가리킵니다. 번 폴더는 최상위 폴더이며, 다른 모든 폴더를 포함합니다.
트리 탐색기는 목록에 번 폴더의 하위 폴더들을 표시합니다. (번 폴더는 표시하지 않습니다.) 폴더는 펼치거나 접을 수 있습니다. 처음에는 모든 폴더가 접혀 있습니다. 폴더를 펼치면 그 하위 폴더들이 펼친 폴더 바로 아래에 들여쓰기되어 표시됩니다. 폴더를 접으면 포함된 모든 폴더가 목록에서 사라집니다. 접었던 폴더를 다시 펼치면, 포함된 모든 폴더는 이전의 접힘과 펼침 상태를 그대로 유지합니다. (그림 1)

(그림 1) 폴더를 펼치고 접는 예제. ▽은 펼쳐진 폴더를, ▶은 접힌 폴더를 나타냅니다.
트리 탐색기에 커서 기능을 추가하려고 합니다. 커서는 처음에 번 폴더의 첫 번째 하위 폴더를 가리킵니다. 두 가지 명령어를 구현해야 합니다.
move: 커서를 목록에서 칸 아래로 이동합니다. 가 음수이면 칸 위로 이동합니다. 이동하다가 목록의 시작이나 끝에 도달하면 더 이상 이동하지 않고 그 자리에 멈춥니다. (그림 2)toggle: 커서가 가리키는 폴더가 접혀 있으면 펼치고, 펼쳐져 있으면 접습니다.

(그림 2) move 명령어를 사용하는 예제
주어진 개의 명령어를 모두 수행하는 프로그램을 작성하세요.
입력
첫 줄에 폴더의 수 과 명령의 수 가 공백으로 구분되어 주어집니다. (, )
다음 개의 줄에는 폴더의 계층 구조가 주어집니다. 번째 줄에는 번 폴더의 하위 폴더 개수와, 하위 폴더 번호가 표시되는 순서대로 그 번호들이 공백으로 구분되어 주어집니다. 두 폴더가 서로를 포함하거나, 두 폴더가 같은 하위 폴더를 공유하는 경우는 없습니다.
다음 개의 줄에 수행해야 하는 명령어가 한 줄에 하나씩 차례로 주어집니다. move 명령어와 함께 주어지는 수 의 절댓값은 을 넘지 않습니다. move 명령어는 적어도 하나 이상 주어집니다.
출력
move 명령어를 수행할 때마다, 이동 후 커서가 위치한 폴더의 번호를 한 줄에 하나씩 출력하세요.