트리 암호 복원

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

문제

V={1,2,,n}V = \{1, 2, \dots, n\}이고 E{{u,v}1u,vn}E \subset \{\{u, v\} \mid 1 \le u, v \le n\}이라고 하자. 트리 T=(V,E)T = (V, E)는 연결되어 있으면서 간선이 정확히 n1n - 1개인 그래프다. 아래 그림은 트리 T1T_1이다.

T1T_1에서 V={1,2,3,4,5,6,7}V = \{1, 2, 3, 4, 5, 6, 7\}이고 E={{4,6},{2,6},{6,5},{3,5},{5,1},{1,7}}E = \{\{4, 6\}, \{2, 6\}, \{6, 5\}, \{3, 5\}, \{5, 1\}, \{1, 7\}\}이다.

민턴 교수는 트리를 암호로 바꾸는 방법을 찾아냈다. 트리의 암호는 VV의 원소 n2n - 2개를 나열한 수열이고, 다음 세 단계를 n2n - 2번 반복해서 만든다.

  1. 남아 있는 트리에서 번호가 가장 작은 잎(차수가 11인 정점)을 고른다.
  2. 그 잎에 붙어 있는 유일한 정점의 번호를 수열 뒤에 이어 붙인다.
  3. 고른 잎을 트리에서 지운다.

n2n - 2번을 반복하면 정점이 두 개 남는다. T1T_1의 암호는 6,5,6,5,1\langle 6, 5, 6, 5, 1 \rangle이다.

암호는 숫자 몇 개가 지워진 채로 전해지기도 한다. 지워진 자리는 문자 x로 표시한다. 트리와 숫자가 지워진 암호가 주어지면, 지워진 숫자를 알아내는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 tt가 주어진다. (1t101 \le t \le 10)

각 테스트 케이스는 세 줄이다. 첫째 줄에 정점의 개수 nn이 주어진다. (2n100002 \le n \le 10000) 둘째 줄에 트리를 나타내는 2n22n - 2개의 수가 공백으로 구분되어 주어진다. 앞에서부터 두 개씩 짝을 지어 첫 번째 짝이 첫 번째 간선, 두 번째 짝이 두 번째 간선을 뜻하고, 나머지도 같은 방식이다. 셋째 줄에 숫자가 지워진 암호가 토큰 n2n - 2개로 주어진다. 각 토큰은 정점 번호이거나, 지워진 자리를 뜻하는 x다. n=2n = 2이면 셋째 줄은 비어 있다.

지워지지 않은 숫자는 주어진 트리의 암호와 일치한다. 모든 테스트 케이스의 nn을 더한 값은 3000030000을 넘지 않는다.

출력

테스트 케이스마다 한 줄에, 지워진 숫자를 입력에 나온 순서대로 공백 하나로 구분해 출력한다. 지워진 숫자가 하나도 없으면 빈 줄을 출력한다.