#include <bits/stdc++.h>
#pragma GCC optimize("O2")
using namespace std;
const int N = 1e5 + 10;
const long long mod = 1e9 + 7;
const long long mod2 = 998244353;
const long long inf = 8e18;
const int LOG = 22;
long long pw(long long a, long long b, long long M) {
  return (!b ? 1
             : (b & 1 ? (a * pw(a * a % M, b / 2, M)) % M
                      : pw(a * a % M, b / 2, M)));
}
int n, d1, d2, root, ptr, fen[N], St[N], Fi[N], node[N];
long long H[3][N], dp[N];
vector<pair<int, int> > G[N];
void add(int i, int x) {
  for (i += 5; i < N; i += i & -i) {
    fen[i] += x;
  }
}
int ask(int i, int tot = 0) {
  for (i += 5; i; i -= i & -i) {
    tot += fen[i];
  }
  return tot;
}
void calc(int v, int P = -1) {
  St[v] = ++ptr;
  for (auto y : G[v]) {
    int u = y.first;
    if (u == P) continue;
    calc(u, v);
  }
  Fi[v] = ptr;
}
void dfs(int v, int P, int T) {
  for (auto y : G[v]) {
    long long u = y.first, cost = y.second;
    if (u == P) continue;
    H[T][u] = H[T][v] + cost;
    dfs(u, v, T);
  }
}
bool cmp(int i, int j) {
  if (dp[i] == dp[j]) return St[i] < St[j];
  return dp[i] < dp[j];
}
void solve(long long x) {
  memset(fen, 0, sizeof fen);
  int tot = 0;
  int ind = 1;
  for (int i = 1; i <= n; i++) {
    if (i > 1) {
      add(St[node[i - 1]], -1);
    }
    while (ind <= n && dp[node[ind]] - dp[node[i]] <= x) {
      add(St[node[ind]], 1);
      ind++;
    }
    tot = max(tot, ask(Fi[node[i]]) - ask(St[node[i]] - 1));
  }
  printf("%d\n", tot);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    G[a].push_back(make_pair(b, c));
    G[b].push_back(make_pair(a, c));
  }
  dfs(1, 0, 0);
  for (int i = 1; i <= n; i++)
    if (H[0][i] > H[0][d1]) d1 = i;
  dfs(d1, 0, 1);
  for (int i = 1; i <= n; i++)
    if (H[1][i] > H[1][d2]) d2 = i;
  dfs(d2, 0, 2);
  for (int i = 1; i <= n; i++) {
    node[i] = i;
    dp[i] = max(H[1][i], H[2][i]);
    if (root == 0 || dp[i] < dp[root]) root = i;
  }
  calc(root, 0);
  sort(node + 1, node + n + 1, cmp);
  int q;
  scanf("%d", &q);
  while (q--) {
    long long x;
    scanf("%lld", &x);
    solve(x);
  }
  return 0;
}
