import sys from collections import deque def main(): sys.setrecursionlimit(1 << 25) N, M = map(int, sys.stdin.readline().split()) A = list(map(int, sys.stdin.readline().split())) edges = [[] for _ in range(N+1)] for _ in range(N-1): u, v = map(int, sys.stdin.readline().split()) edges[u].append(v) edges[v].append(u) # Compute Grundy numbers G = [0] * (N + 1) in_degree = [0] * (N + 1) for u in range(1, N+1): in_degree[u] = len(edges[u]) # Initialize queue with leaves q = deque() for u in range(1, N+1): if in_degree[u] == 1: q.append(u) # Process nodes using BFS while q: u = q.popleft() s = set() for v in edges[u]: s.add(G[v]) mex = 0 while mex in s: mex += 1 G[u] = mex for v in edges[u]: in_degree[v] -= 1 if in_degree[v] == 1: q.append(v) # Compute XOR of all cats' starting positions xor = 0 for a in A: xor ^= G[a] if xor == 0: print("-1 -1") return # Find a move to make the XOR zero for i in range(M): u = A[i] for v in edges[u]: if (xor ^ G[u] ^ G[v]) == 0: print(i + 1, v) return # If no such move found (should not happen) print("-1 -1") if __name__ == '__main__': main()