#!/usr/bin/ruby
#encoding: utf-8

if !ENV['RUBY_THREAD_VM_STACK_SIZE']
    exec({'RUBY_THREAD_VM_STACK_SIZE'=>'10000000000'}, '/usr/bin/ruby', $0)
end

n,q = gets.split.map(&:to_i)
$ans = Array.new(n,0)

# 隣接リストで木を表現する。
$to = Array.new(n){ [] }

(n-1).times do |i|
  a,b = gets.split.map(&:to_i)
  a -= 1
  b -= 1
  $to[a].push(b)
  $to[b].push(a)
end

# 累積和を取るためのdfs
def dfs(v,p=-1)
  $to[v].each do |u|
    if u == p 
      next
    end
    $ans[u] += $ans[v]
    dfs(u,v)
  end
end

q.times do |i|
  p,x = gets.split.map(&:to_i)
  p -= 1
  $ans[p] += x
end

# dfsで累積和を取る。
dfs(0)

(0..n-1).each do |i|
  puts $ans[i]
end
