#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e5 + 5, LOG= 17;
long long n,q, par[MaxN][LOG], d[MaxN], weight[MaxN];
vector<pair<long long,long long>> vt[MaxN];
void dfs(long long u)
{
for(auto x : vt[u])
{
long long v = x.first, weight_v=x.second;
if(v!=par[u][0])
{
par[v][0]=u;
d[v]=d[u]+1;
weight[v]=weight[u]+weight_v;
dfs(v);
}
}
}
long long lca(long long u, long long v)
{
if(d[u]<d[v]) swap(u,v);
for (long long i=LOG-1; i>=0; i--)
{
if(d[par[u][i]]>=d[v])
{
u=par[u][i];
}
}
if(u==v) return u;
for (long long i=LOG-1; i>=0; i--)
{
if(par[u][i]!=par[v][i])
{
u=par[u][i];
v=par[v][i];
}
}
return par[u][0];
}
void input()
{
cin >> n >> q;
for (long long i=1; i<n; i++)
{
long long u,v, w;
cin >> u >> v >> w;
vt[u].push_back({v,w});
vt[v].push_back({u,w});
}
}
void solve()
{
d[0]=-1;
dfs(1);
for (long long j=1; j<LOG; j++)
{
for (long long i=1; i<=n; i++)
{
par[i][j]=par[par[i][j-1]][j-1];
}
}
for (long long i=1; i<=q; i++)
{
long long u,v;
cin >> u >> v;
cout << weight[u]+weight[v]-2*weight[lca(u,v)] << "\n";
}
}
int main()
{
input();
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgbG9uZyBsb25nIE1heE4gPSAxZTUgKyA1LCBMT0c9IDE3Owpsb25nIGxvbmcgbixxLCBwYXJbTWF4Tl1bTE9HXSwgZFtNYXhOXSwgd2VpZ2h0W01heE5dOwp2ZWN0b3I8cGFpcjxsb25nIGxvbmcsbG9uZyBsb25nPj4gdnRbTWF4Tl07CnZvaWQgZGZzKGxvbmcgbG9uZyB1KQp7CiAgICBmb3IoYXV0byB4ICA6IHZ0W3VdKQogICAgewogICAgICAgIGxvbmcgbG9uZyB2ID0geC5maXJzdCwgd2VpZ2h0X3Y9eC5zZWNvbmQ7CiAgICAgICAgaWYodiE9cGFyW3VdWzBdKQogICAgICAgIHsKICAgICAgICAgICAgcGFyW3ZdWzBdPXU7CiAgICAgICAgICAgIGRbdl09ZFt1XSsxOwogICAgICAgICAgICB3ZWlnaHRbdl09d2VpZ2h0W3VdK3dlaWdodF92OwogICAgICAgICAgICBkZnModik7CiAgICAgICAgfQogICAgfQp9CmxvbmcgbG9uZyBsY2EobG9uZyBsb25nIHUsIGxvbmcgbG9uZyB2KQp7CiAgICBpZihkW3VdPGRbdl0pIHN3YXAodSx2KTsKCiAgICBmb3IgKGxvbmcgbG9uZyBpPUxPRy0xOyBpPj0wOyBpLS0pCiAgICB7CiAgICAgICAgaWYoZFtwYXJbdV1baV1dPj1kW3ZdKQogICAgICAgIHsKICAgICAgICAgICAgdT1wYXJbdV1baV07CiAgICAgICAgfQogICAgfQogICAgaWYodT09dikgcmV0dXJuIHU7CiAgICBmb3IgKGxvbmcgbG9uZyBpPUxPRy0xOyBpPj0wOyBpLS0pCiAgICB7CiAgICAgICAgaWYocGFyW3VdW2ldIT1wYXJbdl1baV0pCiAgICAgICAgewogICAgICAgICAgICB1PXBhclt1XVtpXTsKICAgICAgICAgICAgdj1wYXJbdl1baV07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHBhclt1XVswXTsKfQp2b2lkIGlucHV0KCkKewogICAgY2luID4+IG4gPj4gcTsKICAgIGZvciAobG9uZyBsb25nIGk9MTsgaTxuOyBpKyspCiAgICB7CiAgICAgICAgbG9uZyBsb25nIHUsdiwgdzsKICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IHc7CiAgICAgICAgdnRbdV0ucHVzaF9iYWNrKHt2LHd9KTsKICAgICAgICB2dFt2XS5wdXNoX2JhY2soe3Usd30pOwogICAgfQp9CnZvaWQgc29sdmUoKQp7CiAgICBkWzBdPS0xOwogICAgZGZzKDEpOwogICAgZm9yIChsb25nIGxvbmcgaj0xOyBqPExPRzsgaisrKQogICAgewogICAgICAgIGZvciAobG9uZyBsb25nIGk9MTsgaTw9bjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgcGFyW2ldW2pdPXBhcltwYXJbaV1bai0xXV1bai0xXTsKICAgICAgICB9CiAgICB9CiAgICBmb3IgKGxvbmcgbG9uZyBpPTE7IGk8PXE7IGkrKykKICAgIHsKICAgICAgICBsb25nIGxvbmcgdSx2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgY291dCA8PCB3ZWlnaHRbdV0rd2VpZ2h0W3ZdLTIqd2VpZ2h0W2xjYSh1LHYpXSA8PCAiXG4iOwogICAgfQoKfQppbnQgbWFpbigpCnsKICAgIGlucHV0KCk7CiAgICBzb2x2ZSgpOwp9