N, M = map(int, input().split()) S, G = map(lambda x: int(x) - 1, input().split()) graph = [[] for _ in range(N)] for _ in range(M): f, t = map(lambda x: int(x) - 1, input().split()) graph[f].append(t) graph[t].append(f) input() dont_use = set(map(lambda x: int(x) - 1, input().split())) que = [S] visited = [False] * N visited[S] = True while que: v = que.pop() for nx in graph[v]: if visited[nx]: continue if nx in dont_use: continue visited[nx] = True que.append(nx) print("YNeos"[1 ^ visited[G] :: 2])