네트워크 안에는 N개의 컴퓨터가 존재한다. 각 컴퓨터는 1,2,⋯,N번 컴퓨터로 번호가 붙어있다. 서로 다른 두 컴퓨터 쌍을 연결하는 M개의 통신망이 존재한다. i번째 통신망은 S_i번 컴퓨터와 E_i번 컴퓨터를 잇고 있다. 두 컴퓨터 쌍을 연결하는 통신망은 최대 하나 존재한다.
당신은 해커이다. X개의 컴퓨터를 동시에 해킹하여 돈을 얻고자 한다. i번 컴퓨터를 해킹하면, 1분 뒤부터 이 컴퓨터에서 매분 A_i만큼의 돈을 가져올 수 있다.
정부는 당신이 해킹하고 나서 0.5분 뒤 B_1,B_2,⋯,B_Y번 컴퓨터에 보안 시스템을 설치할 계획이다. 당신이 해킹한 컴퓨터에 보안 시스템이 설치되고 나면 더 이상 이 컴퓨터에서 돈을 가져올 수 없다. 또한, 보안 시스템은 통신망을 통해 연쇄적으로 전파된다. 어떤 컴퓨터에 보안 시스템이 설치되고 나면, 1분 뒤 이 컴퓨터에서 통신망으로 직접 연결된 모든 컴퓨터에 보안 시스템이 자동으로 설치된다. 0.5분 뒤 보안 시스템이 설치될 예정인 컴퓨터를 해킹한다면 이 컴퓨터에서 돈을 가져올 수 없음에 유의하라.
정부의 계획을 알게 된 당신은 보안 시스템을 피해 최대한 많은 돈을 얻을 방법을 찾으려고 한다. 당신이 해킹한 컴퓨터들이 모두 보안 시스템에 의해 돈을 얻을 수 없게 되기 전까지 얼마나 많은 돈을 얻을 수 있는지 찾아보자.
첫 번째 줄에 N, M, X, Y가 공백을 사이에 두고 주어진다.
두 번째 줄에는 A_1,A_2,⋯,A_N이 공백으로 구분되어 주어진다.
세 번째 줄부터 M개의 줄에는 네트워크상의 통신망이 주어지는데, 이 중 i(1≤i≤M)번째 줄에는 S_i와 E_i가 공백을 사이에 두고 주어진다.
다음 줄에는 B_1,B_2,⋯,B_Y가 공백으로 구분되어 주어진다.
최대로 얻을 수 있는 돈을 출력한다. 만약 무한히 많은 돈을 얻을 수 있다면 대신 −1을 출력한다.