import java.util.*; import java.io.*; public class Main { public static Scanner sc = new Scanner(System.in); public static PrintWriter pw = new PrintWriter(System.out); public static void main(String[] args) { int t = 1; while( t > 0 ) { solve(); t--; } pw.flush(); } static void solve() { int N = sc.nextInt(); int M = sc.nextInt(); int S = sc.nextInt()-1; int G = sc.nextInt()-1; boolean[] visited = new boolean[N]; ArrayList> edge = new ArrayList<>(); LinkedList que = new LinkedList<>(); for( int i = 0; i < N; i++ ) { edge.add(new ArrayList<>()); } for( int i = 0; i < M; i++ ) { int f = sc.nextInt()-1; int t = sc.nextInt()-1; edge.get(f).add(t); edge.get(t).add(f); } int U = sc.nextInt(); for( int i = 0; i < U; i++ ) { int x = sc.nextInt()-1; visited[x] = true; } que.offer(S); while( !que.isEmpty() ) { int now = que.poll(); if( visited[now] ) continue; visited[now] = true; for( int next : edge.get(now) ) { if( !visited[next] ) que.offer(next); } } pw.println( visited[G] ? "Yes" : "No" ); } }