(n, m) = map(int, input().split()) a = list(map(int, input().split())) graph = [[] for _ in range(n)] for _ in range(m): (u, v) = map(int, input().split()) u -= 1 v -= 1 graph[u].append(v) graph[v].append(u) _ = input() b = list(map(int, input().split())) on = [False] * n for bi in b: on[bi - 1] = True indice = [(ai, index) for ai, index in zip(a, range(n))] indice.sort() results = [] for (ai, index) in indice: if on[index]: on[index] = False results.append(index + 1) for v in graph[index]: if a[index] < a[v]: on[v] ^= True if any(on): print(-1) else: print(len(results)) for res in results: print(res)