승진 카운팅

루트가 있는 트리에서 각 노드보다 값이 큰 자손의 수를 센다.

보통7트리DFS세그먼트 트리아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

소들이 또다시 스타트업을 차리려 한다. 소는 형편없는 관리자라는 사실을 지난 경험에서 배우지 못한 것이다!

소들에게는 1부터 NN까지 번호가 붙어 있다 (1N100,0001 \le N \le 100{,}000). 회사는 트리 구조로 조직되며, 1번 소가 사장(트리의 루트)이다. 사장을 제외한 모든 소에게는 관리자가 정확히 한 명 있다(트리에서의 "부모"). 소 ii에게는 업무 능력을 나타내는 능력치 p(i)p(i)가 있으며, 모든 소의 능력치는 서로 다르다. 소 ii가 소 jj의 조상이면(예를 들어 관리자의 관리자의 관리자), jjii의 부하라고 한다.

안타깝게도 관리자가 여러 부하보다 능력치가 낮은 경우가 자주 있고, 이럴 때 관리자는 부하 몇 명을 승진시키는 것을 고려해야 한다. 이런 상황을 파악하도록 소들을 도와주자. 회사의 모든 소 ii에 대해, p(j)>p(i)p(j) > p(i)인 부하 jj의 수를 구하라.

입력

첫째 줄에 NN이 주어진다.

다음 NN개의 줄에는 소들의 능력치 p(1),p(2),,p(N)p(1), p(2), \ldots, p(N)이 한 줄에 하나씩 주어진다. 각 능력치는 1 이상 1,000,000,000 이하의 정수이며 모두 서로 다르다.

다음 N1N-1개의 줄에는 2번 소부터 NN번 소까지 각 소의 관리자(부모) 번호가 차례로 주어진다. 1번 소는 사장이므로 관리자가 없다.

출력

NN개의 줄을 출력한다. ii번째 줄에는 소 ii의 부하 중 소 ii보다 능력치가 높은 소의 수를 출력한다.