정점이 $N$개이고 번호가 $1$부터 $N$까지 매겨진 트리가 주어집니다. 트리의 $i$번째 간선은 정점 $u_i$와 $v_i$를 연결합니다. 처음에 각 $i$ ($1 \le i \le N$)에 대해, 정점 $i$에는 $A_i = 1$이면 돌이 하나 놓여 있고 $A_i = 0$이면 돌이 놓여 있지 않습니다.
다음 연산을 반복해서 수행할 수 있습니다:
- 아직 선택하지 않은 간선 중 양 끝점 가운데 정확히 한 곳에만 돌이 있는 간선을 하나 선택하고, 그 돌을 다른 끝점으로 이동시킵니다.
연산을 정확히 $N - 1$번 수행할 수 있는지 판별하세요. 가능하다면 간선을 선택하는 순서를 출력하세요.
입력
입력은 하나 이상의 테스트 케이스를 포함합니다. 입력의 첫 번째 줄에는 테스트 케이스의 개수를 나타내는 정수 $T$ ($1 \le T \le 10^5$)가 주어집니다. 이어서 $T$개의 테스트 케이스에 대한 설명이 각각 다음과 같은 형식으로 주어집니다.
$$ \begin{aligned} &N \\ &u_1 \ v_1 \\ &u_2 \ v_2 \\ &\vdots \\ &u_{N-1} \ v_{N-1} \\ &A_1 \ A_2 \ \ldots \ A_N \end{aligned} $$
첫 번째 줄에는 정점의 개수를 나타내는 정수 $N$ ($2 \le N \le 2 \times 10^5$)이 주어집니다.
각 $i$ ($1 \le i \le N - 1$)에 대해, 이어지는 줄 중 $i$번째 줄(총 $N - 1$개의 줄)에는 공백으로 구분된 두 정수 $u_i$와 $v_i$ ($1 \le u_i, v_i \le N$)가 주어지며, 이는 $i$번째 간선이 정점 $u_i$와 $v_i$를 연결함을 나타냅니다. 주어지는 그래프는 항상 트리임이 보장됩니다.
마지막 줄에는 공백으로 구분된 $N$개의 정수 $A_1, A_2, \ldots, A_N$ ($A_i \in \{0, 1\}$)이 주어집니다. $A_i$는 처음에 정점 $i$에 돌이 놓여 있는지를 나타냅니다.
모든 테스트 케이스에서 $N$의 합은 $2 \times 10^5$을 초과하지 않습니다.
출력
각 테스트 케이스마다 다음과 같이 정답을 출력합니다.
연산을 정확히 $N - 1$번 수행하는 것이 불가능하다면, 한 줄에 No를 출력합니다.
가능하다면, 첫 번째 줄에 Yes를 출력하고, 두 번째 줄에 선택한 간선의 수열을 다음 형식으로 출력합니다:
$$ e_1 \ e_2 \ \ldots \ e_{N-1} $$
여기서 $e_k$ ($1 \le e_k \le N - 1$)는 $k$번째 연산에서 선택한 간선의 번호를 나타냅니다. 올바른 수열이 여러 개라면 그중 아무것이나 출력해도 됩니다.
예제
입력 1
3 5 1 2 2 3 2 4 2 5 1 1 1 0 0 2 1 2 0 0 9 1 2 2 3 2 4 4 5 4 6 6 7 6 8 6 9 0 0 1 0 1 1 0 1 1
출력 1
Yes 3 2 4 1 No Yes 6 7 4 2 1 3 5 8