#include <bits/stdc++.h>
using namespace std;
#define pb push_back
const int MAXN = 2e3 + 7;
int par[MAXN][27], f[MAXN][27], h[MAXN], n, m, q;
vector <pair<int, int>> a[MAXN];
void dfs(int u, int p){
for(auto [v, w] : a[u]){
if(v != p){
f[v][0] = w;
par[v][0] = u;
h[v] = h[u] + 1;
dfs(v, u);
}
}
}
void precompute(){
for(int j = 1; j <= 20; j++)
for(int i = 1; i <= n; i++){f[i][j] = f[i][j - 1] + f[par[i][j - 1]][j - 1];
par[i][j] = par[par[i][j - 1]][j - 1];
}
}
int lca(int u, int v){
int ans = 0;
if(h[u] < h[v]) swap(u, v);
int x = h[u] - h[v];
for(int i = 30; i >= 0; i--){
if(x >= (1 << i)){
ans += f[u][i];
u = par[u][i];
x -= (1 << i);
}
}
if(u == v) return ans;
int max_h = __lg(h[u]);
for(int i = max_h; i >= 0; i--){
if(par[u][i] != par[v][i]){
ans += f[u][i];
ans += f[v][i];
u = par[u][i];
v = par[v][i];
}
}
return ans + f[v][0] + f[u][0];
}
int main(){
ios_base::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
cin >> n >> q;
for(int i = 1; i <= n - 1; i++){
int x, y, w;
cin >> x >> y >> w;
a[x].pb({y, w});
a[y].pb({x, w});
}
dfs(1, -1);
precompute();
while(q--){
int x, y;
cin >> x >> y;
cout << lca(x, y) << endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCmNvbnN0IGludCBNQVhOID0gMmUzICsgNzsKaW50IHBhcltNQVhOXVsyN10sIGZbTUFYTl1bMjddLCBoW01BWE5dLCBuLCBtLCBxOwp2ZWN0b3IgPHBhaXI8aW50LCBpbnQ+PiBhW01BWE5dOwoKdm9pZCBkZnMoaW50IHUsIGludCBwKXsKICAgIGZvcihhdXRvIFt2LCB3XSA6IGFbdV0pewogICAgICAgIGlmKHYgIT0gcCl7CiAgICAgICAgICAgIGZbdl1bMF0gPSB3OwogICAgICAgICAgICBwYXJbdl1bMF0gPSB1OwogICAgICAgICAgICBoW3ZdID0gaFt1XSArIDE7CiAgICAgICAgICAgIGRmcyh2LCB1KTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgcHJlY29tcHV0ZSgpewogICAgZm9yKGludCBqID0gMTsgaiA8PSAyMDsgaisrKQogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXtmW2ldW2pdID0gZltpXVtqIC0gMV0gKyBmW3BhcltpXVtqIC0gMV1dW2ogLSAxXTsgCiAgICAgICAgICAgIHBhcltpXVtqXSA9IHBhcltwYXJbaV1baiAtIDFdXVtqIC0gMV07CiAgICB9Cn0KCmludCBsY2EoaW50IHUsIGludCB2KXsKICAgIGludCBhbnMgPSAwOwogICAgaWYoaFt1XSA8IGhbdl0pIHN3YXAodSwgdik7CiAgICBpbnQgeCA9IGhbdV0gLSBoW3ZdOwogICAgZm9yKGludCBpID0gMzA7IGkgPj0gMDsgaS0tKXsKICAgICAgICBpZih4ID49ICgxIDw8IGkpKXsKICAgICAgICAgICAgYW5zICs9IGZbdV1baV07CiAgICAgICAgICAgIHUgPSBwYXJbdV1baV07CiAgICAgICAgICAgIHggLT0gKDEgPDwgaSk7CiAgICAgICAgfQogICAgfQogICAgaWYodSA9PSB2KSByZXR1cm4gYW5zOwogICAgCiAgICBpbnQgbWF4X2ggPSBfX2xnKGhbdV0pOwogICAgCiAgICBmb3IoaW50IGkgPSBtYXhfaDsgaSA+PSAwOyBpLS0pewogICAgICAgIGlmKHBhclt1XVtpXSAhPSBwYXJbdl1baV0pewogICAgICAgICAgICBhbnMgKz0gZlt1XVtpXTsKICAgICAgICAgICAgYW5zICs9IGZbdl1baV07CiAgICAgICAgICAgIHUgPSBwYXJbdV1baV07ICAKICAgICAgICAgICAgdiA9IHBhclt2XVtpXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gYW5zICsgZlt2XVswXSArIGZbdV1bMF07Cn0KCmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY291dC50aWUoMCk7CiAgICBjaW4udGllKDApOwogICAgY2luID4+IG4gPj4gcTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbiAtIDE7IGkrKyl7CiAgICAgICAgaW50IHgsIHksIHc7CiAgICAgICAgY2luID4+IHggPj4geSA+PiB3OwogICAgICAgIGFbeF0ucGIoe3ksIHd9KTsKICAgICAgICBhW3ldLnBiKHt4LCB3fSk7CiAgICB9CiAgICBkZnMoMSwgLTEpOwogICAgcHJlY29tcHV0ZSgpOwogICAgd2hpbGUocS0tKXsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBjaW4gPj4geCA+PiB5OwogICAgICAgIGNvdXQgPDwgbGNhKHgsIHkpIDw8IGVuZGw7CiAgICB9Cn0K