두 트리

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

문제

두 트리 T_1,T_2T\_{1},T\_{2}와 수열 a_1,a_2,,a_Na\_{1},a\_{2},\cdots ,a\_{N}이 주어진다. 두 트리는 각각 정점 NN개로 구성되어 있으며, 정점에는 11부터 NN까지의 번호가 겹치지 않게 부여되어 있다. 두 트리의 루트는 11번 정점이다.

T_1T\_{1}T_2T\_{2}에서 ii번 정점을 루트로 하는 서브트리에 속한 정점의 번호의 집합을 각각 P_i,Q_iP\_{i},Q\_{i}라 하자. m_i=maxa_kkP_iQ_im\_{i}=\max\\{a\_{k}\mid k\in P\_{i}\cap Q\_{i}\\}로 정의한다.

m_1,m_2,,m_Nm\_{1},m\_{2},\cdots ,m\_{N}을 구하는 프로그램을 작성하시오.

입력

첫 번째 줄에 NN이 주어진다. (1N250,000)(1\leq N\leq 250\\, 000)

두 번째 줄에 정수 a_1,a_2,,a_Na\_{1},a\_{2},\cdots ,a\_{N}이 공백으로 구분되어 주어진다. (1a_i109)(1\leq a\_{i}\leq 10^{9})

다음 N1N-1개의 줄에 T_1T\_{1}의 각 간선이 잇는 두 정점의 번호 u,vu,v가 공백으로 구분되어 주어진다. (1u,vN;(1\leq u,v\leq N; uv)u\neq v)

다음 N1N-1개의 줄에 T_2T\_{2}의 각 간선이 잇는 두 정점의 번호 u,vu,v가 공백으로 구분되어 주어진다. (1u,vN;(1\leq u,v\leq N; uv)u\neq v)

T_1T\_{1}T_2T\_{2}가 트리 형태임이 보장된다.

출력

m_1,m_2,,m_Nm\_{1},m\_{2},\cdots ,m\_{N}을 차례로 한 줄에 하나씩 출력한다.