두 트리 T_1,T_2와 수열 a_1,a_2,⋯,a_N이 주어진다. 두 트리는 각각 정점 N개로 구성되어 있으며, 정점에는 1부터 N까지의 번호가 겹치지 않게 부여되어 있다. 두 트리의 루트는 1번 정점이다.
T_1과 T_2에서 i번 정점을 루트로 하는 서브트리에 속한 정점의 번호의 집합을 각각 P_i,Q_i라 하자. m_i=maxa_k∣k∈P_i∩Q_i로 정의한다.
m_1,m_2,⋯,m_N을 구하는 프로그램을 작성하시오.
첫 번째 줄에 N이 주어진다. (1≤N≤250,000)
두 번째 줄에 정수 a_1,a_2,⋯,a_N이 공백으로 구분되어 주어진다. (1≤a_i≤109)
다음 N−1개의 줄에 T_1의 각 간선이 잇는 두 정점의 번호 u,v가 공백으로 구분되어 주어진다. (1≤u,v≤N; u=v)
다음 N−1개의 줄에 T_2의 각 간선이 잇는 두 정점의 번호 u,v가 공백으로 구분되어 주어진다. (1≤u,v≤N; u=v)
T_1과 T_2가 트리 형태임이 보장된다.
m_1,m_2,⋯,m_N을 차례로 한 줄에 하나씩 출력한다.