완전 범죄

S에서 D로 이동할 때 한 번에 F만큼 앞으로, B만큼 뒤로 뛸 수 있고 경찰서를 피해야 할 때 최소 이동 횟수를 구한다.

보통4BFS그래프아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

홍익대학교 근처 오락실에 새 게임이 들어왔다. 플레이어는 방금 금은방을 턴 마포구의 대도 X가 되어 아무에게도 들키지 않고 X의 집까지 무사히 도착해야 게임을 클리어한다. 게임은 좌우 버튼 두 개로만 진행하며 규칙은 다음과 같다.

  1. 마포구의 모든 건물은 일렬로 늘어서 있고 각 건물에는 1번부터 NN번까지 번호가 붙어 있다. 마포구에는 경찰서가 KK개 있고 경찰은 이미 X의 얼굴을 알고 있다.
  2. 게임이 시작될 때 X는 범행을 막 끝내고 금은방 SS 안에 있다.
  3. X는 자신의 집 DD에 마포구를 빠져나갈 비밀 통로를 만들어 두었다. 따라서 경찰에게 발각되지 않고 집까지 무사히 돌아가야 한다.
  4. 좌(←) 버튼을 누르면 후방으로, 우(→) 버튼을 누르면 전방으로 달린다. X는 마포구 안에서만 움직일 수 있다. 오랜 연구 끝에 알아낸 이동 방식을 맹신해서 오직 그 방식으로만 움직인다.
  5. X는 얼굴이 보이지 않을 만큼 빠르게 달린다. X가 지금 aa번 건물 안에 있다면, 밖으로 나와 전방으로 달려 a+Fa+F번 건물 안으로 가거나 후방으로 달려 aBa-B번 건물 안으로 갈 수 있다. 단, 너무 빨라서 X 자신도 중간에 멈추지 못한다.
  6. 한 번 달리고 나면 X는 너무 지쳐서 도착한 건물 안에서 10초 동안 쉬어야 한다. 이때 쉬는 곳이 경찰서라면 X는 집에 돌아가지 못하고 체포된다.

이 게임은 아직 베타 버전이어서 집에 무사히 갈 방법이 없는 버그도 있다.

지언이의 취미는 오락실 게임을 누구보다 빨리 클리어하는 것이다. 그래서 대도 X가 집에 무사히 도착하는 여러 방법 가운데 좌우 버튼을 누르는 횟수가 가장 적은 경우의 횟수를 알고 싶다.

마포구 건물의 개수 NN, 털린 금은방 SS, 대도 X의 집 DD, 앞으로 한 번에 달리는 건물 수 FF, 뒤로 한 번에 달리는 건물 수 BB, 마포구 경찰서의 개수 KK, 각 경찰서의 건물 번호 l1,l2,,lKl_1, l_2, \ldots, l_K가 주어진다. 대도 X가 집에 무사히 도착하려면 버튼을 최소 몇 번 눌러야 하는지 구하는 프로그램을 작성하라.

집으로 가는 방법이 없는 경우를 발견하면 이 데이터를 게임 회사에 알리기 위해 BUG FOUND를 출력한다.

입력

첫째 줄에 NN, SS, DD, FF, BB, KK가 주어진다. K>0K > 0이면 둘째 줄에 경찰서의 위치 l1,l2,,lKl_1, l_2, \ldots, l_K가 주어진다.

  • 1S,DN1000001 \le S, D \le N \le 100\,000
  • 0F,B1000000 \le F, B \le 100\,000
  • 0KN/20 \le K \le N/2
  • SDS \ne D이고, SSDD는 경찰서가 아니다.

출력

첫째 줄에 대도 X가 건물 SS에서 집 DD까지 무사히 가기 위해 지언이가 눌러야 하는 버튼의 최소 횟수를 출력한다. DD에 도달할 수 없는 데이터라면 BUG FOUND를 출력한다.