#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
vector<pair<long long, long long>> adj[300001];
vector<long long> d;
long long n, q;
void dfs(long long u, long long par, vector<pair<long long, long long>> adj[],
         long long dis = 0) {
  d[u] = dis;
  for (auto v : adj[u]) {
    if (v.first != par) {
      dfs(v.first, u, adj, dis + v.second);
    }
  }
}
void solve() {
  vector<long long> d1(n), dn(n);
  dfs(0, -1, adj);
  d1 = d;
  d.clear();
  d.resize(n);
  dfs(n - 1, -1, adj);
  dn = d;
  set<pair<long long, long long>> st;
  for (long long i = 0; i < n; i++) {
    st.insert(make_pair(d1[i] - dn[i], i));
  }
  set<pair<long long, long long>> distn;
  int pos[n];
  int ind = 0;
  for (auto itr = st.begin(); itr != st.end(); itr++) {
    pos[itr->second] = ind;
    ind++;
  }
  for (long long i = 0; i < n; i++) {
    distn.insert(make_pair(dn[i], i));
  }
  auto itr = st.begin();
  long long T = (long long)1e18;
  for (long long i = 0; i < n; i++) {
    int x = itr->second;
    distn.erase(make_pair(dn[x], x));
    for (auto e : adj[x]) {
      if (pos[e.first] > pos[x]) {
        distn.erase(make_pair(dn[e.first], e.first));
      }
    }
    if (distn.size() > 0)
      T = min(T, d1[n - 1] - (d1[x] + distn.rbegin()->first));
    for (auto e : adj[x]) {
      if (pos[e.first] > pos[x]) {
        distn.insert(make_pair(dn[e.first], e.first));
      }
    }
    itr++;
  }
  for (long long i = 0; i < q; i++) {
    long long len;
    cin >> len;
    cout << min(d1[n - 1], d1[n - 1] - T + len) << endl;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  cin >> n >> q;
  d.resize(n);
  for (long long i = 0; i < n - 1; i++) {
    long long u, v, w;
    cin >> u >> v >> w;
    u--, v--;
    adj[u].push_back(make_pair(v, w));
    adj[v].push_back(make_pair(u, w));
  }
  solve();
}
