#include <bits/stdc++.h>
using namespace std;
inline int setBit(int N, int pos) { return N = N | (1 << pos); }
inline int resetBit(int N, int pos) { return N = N & ~(1 << pos); }
inline bool checkBit(int N, int pos) { return (bool)(N & (1 << pos)); }
const long long MAX = 300005;
int n;
vector<int> graph[MAX];
struct data {
  int k;
  long long x;
};
vector<data> qrList[MAX];
long long ans[MAX], what[MAX], levelDel[MAX];
void dfs(int u, int l = 0, long long tot = 0, int par = -1) {
  for (data &p : qrList[u]) {
    tot += p.x;
    if (l + p.k + 1 <= n) levelDel[l + p.k + 1] += p.x;
  }
  tot -= levelDel[l];
  ans[u] = tot;
  for (int &v : graph[u]) {
    if (v == par) continue;
    dfs(v, l + 1, tot, u);
  }
  for (data &p : qrList[u]) {
    tot -= p.x;
    if (l + p.k + 1 <= n) levelDel[l + p.k + 1] -= p.x;
  }
}
int main() {
  int i, u, v, q, k;
  long long x;
  scanf("%d", &n);
  for (i = 0; i < n - 1; i++) {
    scanf("%d %d", &u, &v);
    u--, v--;
    graph[u].push_back(v);
    graph[v].push_back(u);
  }
  scanf("%d", &q);
  while (q--) {
    scanf("%d %d", &u, &k);
    scanf("%lld", &x);
    u--;
    qrList[u].push_back({k, x});
  }
  dfs(0);
  for (i = 0; i < n; i++) printf("%lld ", ans[i]);
  puts("");
  return 0;
}
