영선회사에는 매우 좋은 문화가 있는데, 바로 상사가 직속 부하를 칭찬하면 그 부하가 부하의 직속 부하를 연쇄적으로 칭찬하는 내리 칭찬이 있다. 즉, 상사가 한 직속 부하를 칭찬하면 그 부하의 모든 부하들이 칭찬을 받는다.
모든 칭찬에는 칭찬의 정도를 의미하는 수치가 있는데, 이 수치 또한 부하들에게 똑같이 칭찬 받는다.
직속 상사와 직속 부하관계에 대해 주어지고, 칭찬에 대한 정보가 주어질 때, 각자 얼마의 칭찬을 받았는지 출력하시오,
# 14267
import sys
input = lambda: sys.stdin.readline().strip()
# pypy3로 제출하면 메모리초과가 발생할 수 있음
sys.setrecursionlimit(10**9)
from collections import deque
n, m = map(int, input().split())
number = list(map(int, input().split()))
# graph[직속 상사] = [직원1, 직원2, ...]
graph = []
for _ in range(n+1):
graph.append([])
for i in range(1, n):
graph[number[i]].append(i+1)
for g in graph:
g.sort()
points = [0] * (n+1)
# points[직원] = 직접 받은 칭찬 + points[직속 상사]
for _ in range(m):
i, w = map(int, input().split())
points[i] += w
def dfs(v):
for g in graph[v]:
points[g] += points[v]
dfs(g)
dfs(1)
print(*points[1:])