#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define F first
#define S second
#define yes cout << "YES" << "\n"
#define no cout << "NO" << "\n"
#define answer cout << ans1 << "\n"
#define db long double
using namespace std;
ll n,m,a,b,c,d,k,w,x,y,z,ans1,q,T;
bool f=0;
char cc;
const int N=1e5 + 10 , LOG = 20;
const int mod = 998244353;
vector<pair<ll,ll>> g[N];
ll anc[N][LOG];
ll sum[N][LOG];
ll dep[N];
void dfs(int v)
{
for(int i=1;i<LOG;++i)
{
anc[v][i] = anc[anc[v][i-1]][i-1];
sum[v][i] = sum[v][i-1] + sum[anc[v][i-1]][i-1];
}
for(auto [x,c] : g[v])
{
if(x==anc[v][0]){continue;}
dep[x] = dep[v] + 1;
anc[x][0] = v;
sum[x][0] = c;
dfs(x);
}
}
ll LCA(int v,int u)
{
if(dep[v]<dep[u]){swap(v,u);}
int k = dep[v] - dep[u];
ll ret = 0;
for(int i=0;i<LOG;++i)
{
if(k&(1<<i))
{
ret += sum[v][i];
v = anc[v][i];
}
}
if(v==u)
{
return ret;
}
for(int i=LOG-1;i>=0;--i)
{
if(anc[v][i]!=anc[u][i])
{
ret += sum[v][i];
ret += sum[u][i];
v = anc[v][i];
u = anc[u][i];
}
}
ret += sum[v][0] + sum[u][0];
return ret;
}
void solve()
{
cin >> n >> q;
for(int i=1;i<=n;++i){g[i].clear();}
for(int i=1;i<=n-1;++i)
{
cin >> a >> b >> c;
g[a].push_back({b,c});
g[b].push_back({a,c});
}
cin >> x >> y >> z;
dfs(1);
while(q--)
{
cin >> a >> b;
cout << min({LCA(a,b) , LCA(a,x) + LCA(b,y) + z , LCA(a,y) + LCA(b,x) + z}) << "\n";
}
}
int main(){
ios_base::sync_with_stdio(NULL);cin.tie(0);cout.tie(0);
int tt=1,var=0;
cin >> tt;
while(tt--)
{
solve();
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSB5ZXMgY291dCA8PCAiWUVTIiA8PCAiXG4iCiNkZWZpbmUgbm8gY291dCA8PCAiTk8iIDw8ICJcbiIKI2RlZmluZSBhbnN3ZXIgY291dCA8PCBhbnMxIDw8ICJcbiIKI2RlZmluZSBkYiBsb25nIGRvdWJsZQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmxsIG4sbSxhLGIsYyxkLGssdyx4LHkseixhbnMxLHEsVDsKYm9vbCBmPTA7CmNoYXIgY2M7CmNvbnN0IGludCBOPTFlNSArIDEwICwgTE9HID0gMjA7CmNvbnN0IGludCBtb2QgPSA5OTgyNDQzNTM7CnZlY3RvcjxwYWlyPGxsLGxsPj4gZ1tOXTsKbGwgYW5jW05dW0xPR107CmxsIHN1bVtOXVtMT0ddOwpsbCBkZXBbTl07Cgp2b2lkIGRmcyhpbnQgdikKewogIGZvcihpbnQgaT0xO2k8TE9HOysraSkKICB7CiAgICBhbmNbdl1baV0gPSBhbmNbYW5jW3ZdW2ktMV1dW2ktMV07CiAgICBzdW1bdl1baV0gPSBzdW1bdl1baS0xXSArIHN1bVthbmNbdl1baS0xXV1baS0xXTsKICB9CgogIGZvcihhdXRvIFt4LGNdIDogZ1t2XSkKICB7CiAgICBpZih4PT1hbmNbdl1bMF0pe2NvbnRpbnVlO30KCiAgICBkZXBbeF0gPSBkZXBbdl0gKyAxOwogICAgYW5jW3hdWzBdID0gdjsKICAgIHN1bVt4XVswXSA9IGM7CiAgICBkZnMoeCk7CiAgfQp9CgpsbCBMQ0EoaW50IHYsaW50IHUpCnsKICBpZihkZXBbdl08ZGVwW3VdKXtzd2FwKHYsdSk7fQogIGludCBrID0gZGVwW3ZdIC0gZGVwW3VdOwogIGxsIHJldCA9IDA7CiAgZm9yKGludCBpPTA7aTxMT0c7KytpKQogIHsKICAgIGlmKGsmKDE8PGkpKQogICAgewogICAgICByZXQgKz0gc3VtW3ZdW2ldOwogICAgICB2ID0gYW5jW3ZdW2ldOwogICAgfQogIH0KICBpZih2PT11KQogIHsKICAgIHJldHVybiByZXQ7CiAgfQoKICBmb3IoaW50IGk9TE9HLTE7aT49MDstLWkpCiAgewogICAgaWYoYW5jW3ZdW2ldIT1hbmNbdV1baV0pCiAgICB7CiAgICAgIHJldCArPSBzdW1bdl1baV07CiAgICAgIHJldCArPSBzdW1bdV1baV07CiAgICAgIHYgPSBhbmNbdl1baV07CiAgICAgIHUgPSBhbmNbdV1baV07CiAgICB9CiAgfQoKICByZXQgKz0gc3VtW3ZdWzBdICsgc3VtW3VdWzBdOwogIHJldHVybiByZXQ7Cn0KCnZvaWQgc29sdmUoKQp7CiAgY2luID4+IG4gPj4gcTsKICBmb3IoaW50IGk9MTtpPD1uOysraSl7Z1tpXS5jbGVhcigpO30KICBmb3IoaW50IGk9MTtpPD1uLTE7KytpKQogIHsKICAgIGNpbiA+PiBhID4+IGIgPj4gYzsKICAgIGdbYV0ucHVzaF9iYWNrKHtiLGN9KTsKICAgIGdbYl0ucHVzaF9iYWNrKHthLGN9KTsKICB9CiAgY2luID4+IHggPj4geSA+PiB6OwogIGRmcygxKTsKICB3aGlsZShxLS0pCiAgewogICAgY2luID4+IGEgPj4gYjsKICAgIGNvdXQgPDwgbWluKHtMQ0EoYSxiKSAsIExDQShhLHgpICsgTENBKGIseSkgKyB6ICwgTENBKGEseSkgKyBMQ0EoYix4KSArIHp9KSA8PCAiXG4iOwogIH0KfQoKaW50IG1haW4oKXsKICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKE5VTEwpO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiAgaW50IHR0PTEsdmFyPTA7CiAgY2luID4+IHR0OwogIHdoaWxlKHR0LS0pCiAgewogICAgc29sdmUoKTsKICB9CiAgcmV0dXJuIDA7Cn0=