n, m = read_line.split.map(&.to_i) a = read_line.split.map(&.to_i) a = (0...n).map { |i| {a[i], i} }.sort graph = (1..n).map { [] of Int32 } m.times { u, v = read_line.split.map(&.to_i.pred) graph[u] << v graph[v] << u } k = read_line.to_i c = read_line.split.map(&.to_i) b = [0]*n c.each { |i| b[i.pred] = 1 } ans = Array(Int32).new a.each do |(ai, i)| if b[i] == 0 next end b[i] = 0 graph[i].each do |j| if ai < a[j][0] b[j] = 1 - b[j] end end ans << i.succ end if b.sum > 0 puts -1 else puts ans.size puts ans.join("\n") end