#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 100;
long long c[maxn];
long long res[maxn];
int dep[maxn];
vector<int> G[maxn];
int n, m;
vector<pair<int, long long> > ans[maxn];
int lowbit(int x) { return x & (-x); }
void add(int x, long long d) {
  while (x < maxn) {
    c[x] += d;
    x += lowbit(x);
  }
}
long long query(int x) {
  long long res = 0;
  while (x) {
    res += c[x];
    x -= lowbit(x);
  }
  return res;
}
void dfs(int u, int f) {
  for (int i = 0; i < G[u].size(); i++) {
    int v = G[u][i];
    if (v == f) continue;
    dep[v] = dep[u] + 1;
    dfs(v, u);
  }
}
void work(int u, int f) {
  for (int i = 0; i < ans[u].size(); i++) {
    int d = ans[u][i].first;
    int w = ans[u][i].second;
    if (d > n) d = n;
    add(dep[u], w);
    add(dep[u] + d + 1, -w);
  }
  res[u] = query(dep[u]);
  for (int i = 0; i < G[u].size(); i++) {
    int v = G[u][i];
    if (v == f) continue;
    work(v, u);
  }
  for (int i = 0; i < ans[u].size(); i++) {
    int d = ans[u][i].first;
    int w = ans[u][i].second;
    if (d > n) d = n;
    add(dep[u], -w);
    add(dep[u] + d + 1, w);
  }
}
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);
  }
  scanf("%d", &m);
  for (int i = 0; i < m; i++) {
    int v, d;
    long long x;
    scanf("%d%d%lld", &v, &d, &x);
    ans[v].push_back(pair<int, long long>{d, x});
  }
  dep[1] = 1;
  dfs(1, -1);
  work(1, -1);
  for (int i = 1; i <= n; i++) printf("%lld ", res[i]);
  printf("\n");
  return 0;
}
