#include <bits/stdc++.h>
using namespace std;
struct BIT {
  vector<long long> bit;
  BIT(int sz) { bit.resize(sz + 1); }
  void add(int x, long long v) {
    while (x < (int)bit.size()) {
      bit[x] += v;
      x += x & (-x);
    }
  }
  void add(int l, int r, long long v) {
    add(l, v);
    add(r + 1, -v);
  }
  long long query(int x) {
    long long ret = 0;
    while (x) {
      ret += bit[x];
      x -= x & (-x);
    }
    return ret;
  }
};
vector<pair<int, int> > T[300005];
long long ans[300005] = {};
vector<int> G[300005];
int dep[300005];
int n, m;
void dfs(int x, int p, int d) {
  dep[x] = d;
  for (int y : G[x]) {
    if (y != p) dfs(y, x, d + 1);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    G[u].push_back(v);
    G[v].push_back(u);
  }
  dfs(1, -1, 1);
  int v, d, x;
  scanf("%d", &m);
  for (int i = 0; i < m; i++) {
    scanf("%d%d%d", &v, &d, &x);
    T[v].emplace_back(x, d);
  }
  BIT loli(n);
  function<void(int, int)> solve = [&](int x, int p) {
    for (auto it : T[x]) {
      loli.add(dep[x], min(dep[x] + it.second, n), it.first);
    }
    ans[x] = loli.query(dep[x]);
    for (int y : G[x]) {
      if (y != p) solve(y, x);
    }
    for (auto it : T[x]) {
      loli.add(dep[x], min(dep[x] + it.second, n), -it.first);
    }
  };
  solve(1, -1);
  for (int i = 1; i <= n; i++) {
    printf("%lld%c", ans[i], " \n"[i == n]);
  }
  return 0;
}
