import sys from collections import deque def main(): sys.setrecursionlimit(1 << 25) input = sys.stdin.read data = input().split() ptr = 0 N = int(data[ptr]) ptr += 1 edges = [[] for _ in range(N+1)] for _ in range(N-1): a = int(data[ptr]) ptr += 1 b = int(data[ptr]) ptr += 1 edges[a].append(b) edges[b].append(a) Q = int(data[ptr]) ptr += 1 queries = [] for _ in range(Q): u_i = int(data[ptr]) ptr += 1 v_i = int(data[ptr]) ptr += 1 queries.append((u_i, v_i)) value = list(range(N+1)) # value[0] unused prev_ans = 0 for u_i, v_i in queries: x = prev_ans u = ((u_i + N - 1 + x) % N) + 1 v = ((v_i + N - 1 + x) % N) + 1 # Swap values value[u], value[v] = value[v], value[u] # Find the optimal w for u visited = set() current = u while True: visited.add(current) max_val = -1 next_node = None for neighbor in edges[current]: if neighbor not in visited and value[neighbor] > max_val: max_val = value[neighbor] next_node = neighbor if next_node is None: break current = next_node prev_ans = current print(prev_ans) if __name__ == '__main__': main()