import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.PriorityQueue; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] sa = br.readLine().split(" "); int n = Integer.parseInt(sa[0]); int m = Integer.parseInt(sa[1]); sa = br.readLine().split(" "); Obj[] arr = new Obj[n]; PriorityQueue que = new PriorityQueue<>((o1, o2) -> o1.a - o2.a); for (int i = 0; i < n; i++) { Obj o = new Obj(); o.i = i; o.a = Integer.parseInt(sa[i]); que.add(o); arr[i] = o; } List> list = new ArrayList<>(n); for (int i = 0; i < n; i++) { list.add(new ArrayList<>()); } for (int i = 0; i < m; i++) { sa = br.readLine().split(" "); int u = Integer.parseInt(sa[0]) - 1; int v = Integer.parseInt(sa[1]) - 1; list.get(u).add(v); list.get(v).add(u); } int k = Integer.parseInt(br.readLine()); boolean[] p = new boolean[n]; sa = br.readLine().split(" "); for (int i = 0; i < k; i++) { int b = Integer.parseInt(sa[i]) - 1; p[b] = true; } br.close(); List ans = new ArrayList<>(); while (!que.isEmpty()) { Obj o = que.poll(); if (!p[o.i]) { continue; } ans.add(o.i + 1); p[o.i] = false; for (int i : list.get(o.i)) { if (arr[i].a > o.a) { p[i] = !p[i]; } } } PrintWriter pw = new PrintWriter(System.out); pw.println(ans.size()); for (int i : ans) { pw.println(i); } pw.flush(); } static class Obj { int i, a; } }