#include <bits/stdc++.h>
using namespace std;
void preproc() {}
void reset() {}
void solve() {
  int n, m;
  cin >> n >> m;
  vector<vector<pair<int, long long>>> g, t;
  g.assign(n + 1, vector<pair<int, long long>>());
  t.assign(n + 1, vector<pair<int, long long>>());
  for (int e = 1; e <= n - 1; ++e) {
    int u, v;
    long long w;
    cin >> u >> v >> w;
    g[u].push_back({v, w});
    g[v].push_back({u, w});
  }
  vector<int> q(n + 1), on(n + 1), vis(n + 1);
  vector<pair<int, long long>> prv(n + 1, {-1, 0}), nxt(n + 1, {-1, 0});
  q[1] = 1, prv[1] = {-1, 0};
  vis[1] = true;
  int e = -1;
  for (int c = 1, x = 2; c <= n; ++c)
    for (auto [v, w] : g[q[c]])
      if (not vis[v]) {
        e = (v == n ? x : e);
        t[c].push_back({x, w});
        q[x] = v;
        prv[x] = {c, w};
        vis[v] = true;
        x += 1;
      }
  for (int x = e; x != -1; x = prv[x].first) {
    if (prv[x].first != -1) nxt[prv[x].first] = {x, prv[x].second};
    on[x] = true;
  }
  vector<long long> f(n + 1), h(n + 1), xdeg(n + 1);
  for (int c = n; c >= 1; --c)
    for (auto [x, w] : t[c])
      if (not on[x]) {
        f[c] = max(f[c], f[x] + w);
        h[c] = max(h[c], h[x] + 1);
        xdeg[c] += 1;
      }
  bool ok = false;
  for (int c = 1; c <= n; ++c)
    if (on[c]) ok |= (xdeg[c] >= 2 or h[c] >= 2);
  vector<long long> suf(n + 1);
  set<pair<long long, int>, greater<pair<long long, int>>> s;
  for (int c = e; c != -1; c = prv[c].first) {
    if (prv[c].first != -1) suf[prv[c].first] += suf[c] + prv[c].second;
    s.insert({f[c] + suf[c], c});
  }
  long long mx = 0, pref = 0;
  for (int c = 1; c != -1; c = nxt[c].first) {
    s.erase({f[c] + suf[c], c});
    if (nxt[c].first != -1 and xdeg[c] == 0 and xdeg[nxt[c].first] == 0)
      s.erase({f[nxt[c].first] + suf[nxt[c].first], nxt[c].first});
    if (not s.empty()) mx = max(mx, pref + f[c] + s.begin()->first);
    if (nxt[c].first != -1) pref += nxt[c].second;
  }
  long long olen = suf[1];
  while (m--) {
    long long xi;
    cin >> xi;
    if (ok)
      cout << olen << '\n';
    else
      cout << min(olen, mx + xi) << '\n';
  }
  return;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.precision(10);
  cout << fixed;
  preproc();
  int tc = 1;
  for (int Tt = 1; Tt <= tc; ++Tt) {
    reset();
    solve();
  }
  return EXIT_SUCCESS;
}
