import sys
from collections import deque

def main():
    sys.setrecursionlimit(1 << 25)
    N = int(sys.stdin.readline())
    adj = [[] for _ in range(N)]
    for _ in range(N-1):
        u, v, w = map(int, sys.stdin.readline().split())
        adj[u].append((v, w))
        adj[v].append((u, w))
    
    parent = [-1] * N
    sum_from_root = [0] * N
    depth = [0] * N
    root = 0
    queue = deque([(root, -1, 0)])
    
    while queue:
        u, p, s = queue.popleft()
        parent[u] = p
        sum_from_root[u] = s
        for v, w in adj[u]:
            if v != p:
                if parent[v] == -1:
                    depth[v] = depth[u] + 1
                    queue.append((v, u, s + w))
    
    LOG = 20
    up = [[-1] * N for _ in range(LOG)]
    for v in range(N):
        up[0][v] = parent[v]
    
    for k in range(1, LOG):
        for v in range(N):
            if up[k-1][v] != -1:
                up[k][v] = up[k-1][up[k-1][v]]
    
    def lca(u, v):
        if depth[u] < depth[v]:
            u, v = v, u
        for k in reversed(range(LOG)):
            if depth[u] - (1 << k) >= depth[v]:
                u = up[k][u]
        if u == v:
            return u
        for k in reversed(range(LOG)):
            if up[k][u] != up[k][v]:
                u = up[k][u]
                v = up[k][v]
        return up[0][u]
    
    Q = int(sys.stdin.readline())
    for _ in range(Q):
        x, y, z = map(int, sys.stdin.readline().split())
        l_xy = lca(x, y)
        sum_xy = sum_from_root[x] + sum_from_root[y] - 2 * sum_from_root[l_xy]
        l_yz = lca(y, z)
        sum_yz = sum_from_root[y] + sum_from_root[z] - 2 * sum_from_root[l_yz]
        l_zx = lca(z, x)
        sum_zx = sum_from_root[z] + sum_from_root[x] - 2 * sum_from_root[l_zx]
        total = (sum_xy + sum_yz + sum_zx) // 2
        print(total)

if __name__ == "__main__":
    main()