#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> g[300005];
vector<pair<int, int>> q[300005];
long long ans[300005], st[4 * 2 * 300005] = {};
void modify(int si, int ss, int se, int ind, int val) {
  if (ss > ind || se < ind) return;
  if (ss == se) {
    st[si] += val;
    return;
  }
  int mid = (ss + se) >> 1;
  modify(2 * si + 1, ss, mid, ind, val);
  modify(2 * si + 2, mid + 1, se, ind, val);
  st[si] = st[2 * si + 1] + st[2 * si + 2];
  return;
}
long long query(int si, int ss, int se, int ind) {
  if (se < ind) return 0;
  if (ss >= ind) {
    return st[si];
  }
  int mid = (ss + se) >> 1;
  return query(2 * si + 1, ss, mid, ind) + query(2 * si + 2, mid + 1, se, ind);
}
void dfs(int u, int par, int h) {
  for (auto p : q[u]) {
    modify(0, 0, 2 * n - 2, h + p.first, p.second);
  }
  ans[u] = query(0, 0, 2 * n - 2, h);
  for (auto v : g[u]) {
    if (v != par) {
      dfs(v, u, h + 1);
    }
  }
  for (auto p : q[u]) {
    modify(0, 0, 2 * n - 2, h + p.first, -p.second);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    g[u].push_back(v);
    g[v].push_back(u);
  }
  int m;
  scanf("%d", &m);
  while (m--) {
    int u, d, x;
    scanf("%d%d%d", &u, &d, &x);
    d = min(d, n - 1);
    q[u].emplace_back(d, x);
  }
  dfs(1, 0, 0);
  for (int i = 1; i <= n; i++) {
    printf("%lld ", ans[i]);
  }
  printf("\n");
  return 0;
}
