N, Q = [int(item) for item in input().split()]

tree_list = [input() for _ in range(1,N)]
tree_list_int = [[int(k) for k in i.split()] for i in tree_list]
query_list = [input() for _ in range(Q)]
query_list_int = [[int(k) for k in i.split()]  for i in query_list]

val_list = [0 for _ in range(N)]
node_index = [[] for _ in range(N)]
cumulated_sum_list = [0] * N

# make graph(relation)
for a, b in tree_list_int:
    node_index[a -1].append(b - 1) #親位置に子のindexを追加
    node_index[b -1].append(a - 1) #子位置に親のindexを追加

for index, val in query_list_int:
    val_list[index-1] += val #加算する値を親位置へ記載

def dfs(child_index, pairent_index):
    for child in node_index[child_index]: #とあるノード（再帰していく）の子ノードを線形探索

        if child != pairent_index: #子ノードが親ノードでないとき
            val_list[child] += val_list[child_index] #累積和の計算
            dfs(child, child_index) #再帰する。子にノード子を挿入。今回の子を親に

    return val_list

res = dfs(0, -1) #0はルート、-1は親を持っていない事

for i in res:
    print(i)