모든 도시를 방문하고 돌아오는 최단 이동 순서가 주어질 때, 각 도시의 부모 도시를 복원한다.
보통6스택트리DFS아직 제출이 없습니다시간 제한1초메모리 제한512 MB윤호는 K개의 도시가 트리 형태로 연결된 트리 나라의 관광 가이드이다. 새로 맡은 패키지 상품은 트리 나라의 루트 도시에서 출발해 모든 도시를 둘러보고 루트로 돌아오는 투어이다. 상품의 콘셉트만 정해진 상태이므로, 어떤 순서로 도시를 방문할지는 윤호가 정한다. 일을 빨리 끝내고 싶은 윤호는 모든 도시를 둘러보고 돌아오는 순서 중에서 이동 횟수가 가장 적은 순서를 골라 투어를 진행해 왔다.
예를 들어 루트 도시가 0번인 트리 나라에서 윤호가 고른 방문 순서 중 하나는 다음과 같다.
0-1-2-1-3-4-3-5-3-1-6-1-0-7-8-7-9-7-0
어느 날 윤호는 지도를 잃어버렸다. 하지만 관광 계획서에는 도시를 어떤 순서로 순회해야 하는지가 그대로 남아 있다. 이를 바탕으로 지도를 다시 그리기로 했지만, 윤호는 이 작업이 너무 어려웠고, 보다 답답한 당신이 모든 도시의 부모 도시를 대신 알려주기로 했다.
위의 순서에 대응하는 지도에서는 0번 도시는 부모가 없고, 1번 도시의 부모는 0번, 2번 도시의 부모는 1번이 되는 식으로 표시하면 된다.
입력은 표준 입력으로 주어진다. 첫째 줄에 윤호의 방문 순서의 길이 N (1≤N≤200,000)이 주어진다.
둘째 줄에 N개의 정수가 주어진다. i번째 정수 Ai는 i번째로 방문한 도시의 번호를 의미하며, 주어진 순서대로 방문할 수 있는 트리가 존재함이 보장된다. 도시가 K개 존재한다면 도시의 번호는 0번부터 K−1번까지 중복 없이 붙는다. 즉, 0≤Ai<K이다.
표준 출력으로 출력한다. 첫째 줄에 트리 나라 도시의 총 개수 K를 출력한다.
둘째 줄에 K개의 정수를 공백으로 구분해 출력한다. i번째 수는 i번 도시의 부모 도시 번호이며, 부모가 없는 루트 도시에 대해서는 −1을 출력한다.