#include <bits/stdc++.h>
#define FOR(i, a, b) for(int i = a; i <= b; i++)
#define FOD(i, a, b) for(int i = a; i >= b; i--)
#define file(name) if(fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
#define fi first
#define se second
#define maxn int(2e5 + 5)
#define logn 20
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
int n, q, h[maxn], up[maxn][logn];
ll f[maxn];
vector<pii> adj[maxn];
void dfs(int u) {
for(pii x : adj[u]) {
int v = x.fi, w = x.se;
if(v == up[u][0]) continue;
h[v] = h[u] + 1;
f[v] = f[u] + w;
up[v][0] = u;
FOR(i, 1, logn - 1)
up[v][i] = up[up[v][i - 1]][i - 1];
dfs(v);
}
}
int lca(int u, int v) {
if(h[u] < h[v]) swap(u, v);
int k = h[u] - h[v];
FOD(i, logn - 1, 0)
if(k >> i & 1) u = up[u][i];
if(u == v) return u;
FOD(i, logn - 1, 0)
if(up[u][i] != up[v][i])
u = up[u][i], v = up[v][i];
return up[u][0];
}
ll dist(int u, int v) {
return f[u] + f[v] - 2 * f[lca(u, v)];
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n;
FOR(i, 1, n - 1) {
int u, v, w;
cin >> u >> v >> w;
adj[u].push_back({ v, w });
adj[v].push_back({ u, w });
}
cin >> q;
dfs(1);
while (q--) {
int a, b, c;
cin >> a >> b >> c;
int ab = lca(a, b);
int ac = lca(a, c);
int bc = lca(b, c);
ll S1 = dist(a, ab) + dist(b, ab) + dist(c, ab);
ll S2 = dist(a, ac) + dist(b, ac) + dist(c, ac);
ll S3 = dist(b, bc) + dist(c, bc) + dist(a, bc);
cout << min({ S1, S2, S3 }) << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvcihpbnQgaSA9IGE7IGkgPD0gYjsgaSsrKQojZGVmaW5lIEZPRChpLCBhLCBiKSBmb3IoaW50IGkgPSBhOyBpID49IGI7IGktLSkKI2RlZmluZSBmaWxlKG5hbWUpIGlmKGZvcGVuKG5hbWUiLmlucCIsICJyIikpIHsgZnJlb3BlbihuYW1lIi5pbnAiLCAiciIsIHN0ZGluKTsgZnJlb3BlbihuYW1lIi5vdXQiLCAidyIsIHN0ZG91dCk7IH0KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIG1heG4gaW50KDJlNSArIDUpCiNkZWZpbmUgbG9nbiAyMAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHBpaTsKCmludCBuLCBxLCBoW21heG5dLCB1cFttYXhuXVtsb2duXTsKCmxsIGZbbWF4bl07Cgp2ZWN0b3I8cGlpPiBhZGpbbWF4bl07Cgp2b2lkIGRmcyhpbnQgdSkgewogICAgZm9yKHBpaSB4IDogYWRqW3VdKSB7CiAgICAgICAgaW50IHYgPSB4LmZpLCB3ID0geC5zZTsKICAgICAgICBpZih2ID09IHVwW3VdWzBdKSBjb250aW51ZTsKICAgICAgICBoW3ZdID0gaFt1XSArIDE7CiAgICAgICAgZlt2XSA9IGZbdV0gKyB3OwogICAgICAgIHVwW3ZdWzBdID0gdTsKICAgICAgICBGT1IoaSwgMSwgbG9nbiAtIDEpCiAgICAgICAgICAgIHVwW3ZdW2ldID0gdXBbdXBbdl1baSAtIDFdXVtpIC0gMV07CiAgICAgICAgZGZzKHYpOwogICAgfQp9CgppbnQgbGNhKGludCB1LCBpbnQgdikgewogICAgaWYoaFt1XSA8IGhbdl0pIHN3YXAodSwgdik7CiAgICBpbnQgayA9IGhbdV0gLSBoW3ZdOwogICAgRk9EKGksIGxvZ24gLSAxLCAwKQogICAgICAgIGlmKGsgPj4gaSAmIDEpIHUgPSB1cFt1XVtpXTsKICAgIGlmKHUgPT0gdikgcmV0dXJuIHU7CiAgICBGT0QoaSwgbG9nbiAtIDEsIDApCiAgICAgICAgaWYodXBbdV1baV0gIT0gdXBbdl1baV0pCiAgICAgICAgICAgIHUgPSB1cFt1XVtpXSwgdiA9IHVwW3ZdW2ldOwogICAgcmV0dXJuIHVwW3VdWzBdOwp9CgpsbCBkaXN0KGludCB1LCBpbnQgdikgewogICAgcmV0dXJuIGZbdV0gKyBmW3ZdIC0gMiAqIGZbbGNhKHUsIHYpXTsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGNpbiA+PiBuOwogICAgRk9SKGksIDEsIG4gLSAxKSB7CiAgICAgICAgaW50IHUsIHYsIHc7CiAgICAgICAgY2luID4+IHUgPj4gdiA+PiB3OwogICAgICAgIGFkalt1XS5wdXNoX2JhY2soeyB2LCB3IH0pOwogICAgICAgIGFkalt2XS5wdXNoX2JhY2soeyB1LCB3IH0pOwogICAgfQogICAgY2luID4+IHE7CiAgICBkZnMoMSk7CiAgICB3aGlsZSAocS0tKSB7CiAgICAgICAgaW50IGEsIGIsIGM7CiAgICAgICAgY2luID4+IGEgPj4gYiA+PiBjOwogICAgICAgIGludCBhYiA9IGxjYShhLCBiKTsKICAgICAgICBpbnQgYWMgPSBsY2EoYSwgYyk7CiAgICAgICAgaW50IGJjID0gbGNhKGIsIGMpOwogICAgICAgIGxsIFMxID0gZGlzdChhLCBhYikgKyBkaXN0KGIsIGFiKSArIGRpc3QoYywgYWIpOwogICAgICAgIGxsIFMyID0gZGlzdChhLCBhYykgKyBkaXN0KGIsIGFjKSArIGRpc3QoYywgYWMpOwogICAgICAgIGxsIFMzID0gZGlzdChiLCBiYykgKyBkaXN0KGMsIGJjKSArIGRpc3QoYSwgYmMpOwogICAgICAgIGNvdXQgPDwgbWluKHsgUzEsIFMyLCBTMyB9KSA8PCAnXG4nOyAgCiAgICB9CiAgICByZXR1cm4gMDsKfQ==