#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3e5 + 10;
const int MOD = 1e9 + 7;
struct star {
  int next, to;
};
struct s1 {
  int d;
  long long int num;
};
int n, head[MAXN], len, m;
star g[2 * MAXN];
long long int ans[MAXN], bit[MAXN];
vector<s1> a[MAXN];
bool vis[MAXN];
void init() {
  memset(head, -1, sizeof(head));
  len = 0;
}
void add(int u, int v) {
  g[++len].to = v;
  g[len].next = head[u];
  head[u] = len;
}
int lowbit(int x) { return x & (-x); }
void bitAdd(int x, long long int num) {
  while (x <= n + 10) {
    bit[x] += num;
    x += lowbit(x);
  }
}
long long int getSum(int x) {
  long long int re = 0;
  while (x > 0) {
    re += bit[x];
    x -= lowbit(x);
  }
  return re;
}
void dfs(int now, int d) {
  vis[now] = true;
  for (int i = 0; i < a[now].size(); ++i) {
    s1 x = a[now][i];
    x.d += d;
    bitAdd(d, x.num);
    bitAdd(x.d + 1, -x.num);
  }
  ans[now] = getSum(d);
  for (int i = head[now]; i != -1; i = g[i].next) {
    if (!vis[g[i].to]) {
      dfs(g[i].to, d + 1);
    }
  }
  for (int i = 0; i < a[now].size(); ++i) {
    s1 x = a[now][i];
    x.d += d;
    bitAdd(d, -x.num);
    bitAdd(x.d + 1, x.num);
  }
}
int main() {
  scanf("%d", &n);
  init();
  for (int i = 1; i < n; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    add(u, v);
    add(v, u);
  }
  scanf("%d", &m);
  for (int i = 1; i <= m; ++i) {
    int u, d;
    long long int num;
    scanf("%d%d%I64d", &u, &d, &num);
    s1 x;
    x.d = d;
    x.num = num;
    a[u].push_back(x);
  }
  memset(vis, false, sizeof(vis));
  dfs(1, 1);
  for (int i = 1; i <= n; ++i) {
    i == n ? printf("%I64d\n", ans[i]) : printf("%I64d ", ans[i]);
  }
  return 0;
}
