#include <bits/stdc++.h>
using namespace std;
vector<pair<int, long long> > atu[3000000];
long long res[3000000];
vector<int> grafo[3000000];
long long bit[3000000];
void update(int idx, long long val) {
  idx++;
  while (idx <= 600005) {
    bit[idx] += val;
    idx += idx & (-idx);
  }
}
long long getSum(int idx) {
  if (idx < 0) return 0;
  idx++;
  long long ans = 0;
  while (idx > 0) {
    ans += bit[idx];
    idx -= idx & -(idx);
  }
  return ans;
}
void solve(int node, int pai, int prof = 0) {
  for (pair<int, long long> a : atu[node]) {
    update(prof + a.first, a.second);
  }
  res[node] = getSum(600005) - getSum(prof - 1);
  for (int filho : grafo[node]) {
    if (filho != pai) {
      solve(filho, node, prof + 1);
    }
  }
  for (pair<int, long long> a : atu[node]) {
    update(prof + a.first, -a.second);
  }
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n - 1; i++) {
    int de, para;
    scanf("%d %d", &de, &para);
    grafo[de].emplace_back(para);
    grafo[para].emplace_back(de);
  }
  int m;
  scanf("%d", &m);
  for (int i = 0; i < m; i++) {
    int de, prof;
    long long custo;
    scanf("%d %d %lld", &de, &prof, &custo);
    atu[de].emplace_back(min(prof, n + 1), custo);
  }
  solve(1, 0);
  for (int i = 1; i <= n; i++) {
    printf("%lld%c", res[i], " \n"[i == n]);
  }
  return 0;
}
