#include <bits/stdc++.h>
using namespace std;
//
const int maxN = 1005;
//
int N, Q, d[maxN], h[maxN], up[maxN][20];
vector<pair<int, int>> edge[maxN];
//
void DFS (int u)
{
int v, l;
//
for (pair<int, int> p : edge[u])
{
v = p.first, l = p.second;
if (v == up[u][0])
continue;
d[v] = d[u] + l;
h[v] = h[u] + 1;
up[v][0] = u;
for (int i = 1; i < 20; ++i)
up[v][i] = up[up[v][i - 1]][i - 1];
DFS(v);
}
}
int LCA (int u, int v)
{
if (h[u] != h[v])
{
if (h[u] < h[v])
swap(u, v);
for (int k = h[u] - h[v], i = 0; (1 << i) <= k; ++i)
if (k >> i & 1)
u = up[u][i];
}
if (u == v)
return u;
for (int i = __lg(h[v]); i >= 0; --i)
if (up[u][i] != up[v][i])
u = up[u][i], v = up[v][i];
return up[v][0];
}
//
void process (void)
{
int A, B, L;
//
cin >> N >> Q;
for (int i = 1; i < N; ++i)
cin >> A >> B >> L,
edge[A].emplace_back(B, L),
edge[B].emplace_back(A, L);
DFS(1);
while (Q--)
cin >> A >> B,
cout << d[A] + d[B] - d[LCA(A, B)] * 2 << '\n';
}
//
signed main (void)
{
ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
process();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vCmNvbnN0IGludCBtYXhOID0gMTAwNTsKLy8KaW50IE4sIFEsIGRbbWF4Tl0sIGhbbWF4Tl0sIHVwW21heE5dWzIwXTsKdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBlZGdlW21heE5dOwovLwp2b2lkIERGUyAoaW50IHUpCnsKICAgIGludCB2LCBsOwogICAgLy8KICAgIGZvciAocGFpcjxpbnQsIGludD4gcCA6IGVkZ2VbdV0pCiAgICB7CiAgICAgICAgdiA9IHAuZmlyc3QsIGwgPSBwLnNlY29uZDsKICAgICAgICBpZiAodiA9PSB1cFt1XVswXSkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgZFt2XSA9IGRbdV0gKyBsOwogICAgICAgIGhbdl0gPSBoW3VdICsgMTsKICAgICAgICB1cFt2XVswXSA9IHU7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAyMDsgKytpKQogICAgICAgICAgICB1cFt2XVtpXSA9IHVwW3VwW3ZdW2kgLSAxXV1baSAtIDFdOwogICAgICAgIERGUyh2KTsKICAgIH0KfQppbnQgTENBIChpbnQgdSwgaW50IHYpCnsKICAgIGlmIChoW3VdICE9IGhbdl0pCiAgICB7CiAgICAgICAgaWYgKGhbdV0gPCBoW3ZdKQogICAgICAgICAgICBzd2FwKHUsIHYpOwogICAgICAgIGZvciAoaW50IGsgPSBoW3VdIC0gaFt2XSwgaSA9IDA7ICgxIDw8IGkpIDw9IGs7ICsraSkKICAgICAgICAgICAgaWYgKGsgPj4gaSAmIDEpCiAgICAgICAgICAgICAgICB1ID0gdXBbdV1baV07CiAgICB9CiAgICBpZiAodSA9PSB2KQogICAgICAgIHJldHVybiB1OwogICAgZm9yIChpbnQgaSA9IF9fbGcoaFt2XSk7IGkgPj0gMDsgLS1pKQogICAgICAgIGlmICh1cFt1XVtpXSAhPSB1cFt2XVtpXSkKICAgICAgICAgICAgdSA9IHVwW3VdW2ldLCB2ID0gdXBbdl1baV07CiAgICByZXR1cm4gdXBbdl1bMF07Cn0KLy8Kdm9pZCBwcm9jZXNzICh2b2lkKQp7CiAgICBpbnQgQSwgQiwgTDsKICAgIC8vCiAgICBjaW4gPj4gTiA+PiBROwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBOOyArK2kpCiAgICAgICAgY2luID4+IEEgPj4gQiA+PiBMLAogICAgICAgIGVkZ2VbQV0uZW1wbGFjZV9iYWNrKEIsIEwpLAogICAgICAgIGVkZ2VbQl0uZW1wbGFjZV9iYWNrKEEsIEwpOwoKICAgIERGUygxKTsKCiAgICB3aGlsZSAoUS0tKQogICAgICAgIGNpbiA+PiBBID4+IEIsCiAgICAgICAgY291dCA8PCBkW0FdICsgZFtCXSAtIGRbTENBKEEsIEIpXSAqIDIgPDwgJ1xuJzsKfQovLwpzaWduZWQgbWFpbiAodm9pZCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSksIGNpbi50aWUobnVsbHB0ciksIGNvdXQudGllKG51bGxwdHIpOwogICAgcHJvY2VzcygpOwp9Cg==