import sys sys.setrecursionlimit(10**9) n = int(input()) e = [[] for i in range(n)] for i in range(n - 1): a, b, c = map(int, input().split()) e[a - 1].append([b - 1, c]) e[b - 1].append([a - 1, c]) depth = [0 for i in range(n)] dp = [[-1 for j in range(40)] for i in range(n)] def dfs(v, p): for i in range(len(e[v])): if e[v][i][0] != p: depth[e[v][i][0]] = depth[v] + e[v][i][1] dp[e[v][i][0]][0] = v dfs(e[v][i][0], v) dfs(0, -1) for k in range(1, 40): for i in range(n): if dp[i][k - 1] >= 0: dp[i][k] = dp[dp[i][k - 1]][k - 1] else: dp[i][k] = -1 q = int(input()) for i in range(q): a, b = map(int, input().split()) a -= 1 b -= 1 u = a v = b if depth[u] < depth[v]: t = depth[v] - depth[u] for j in range(40): if (t & (1 << j)) != 0: v = dp[v][j] if depth[v] < depth[u]: t = depth[u] - depth[v] for j in range(40): if (t & (1 << j)) != 0: u = dp[u][j] lca = 0 for j in reversed(range(40)): if dp[u][j] != dp[v][j]: u = dp[u][j] v = dp[v][j] lca = u if u != v: lca = dp[u][0] print(depth[a] + depth[b] - (2 * depth[lca]))