버스 기사가 정류장에 서 있는 사람을 지나쳐서, 사람과 출입문 사이 거리가 가장 먼 자리에 차를 세우는 모습을 본 적이 있을 것이다. 이유는 아무도 모른다. 심술은 아닐 것이다. 타려는 사람이 걸어오는 동안 이미 탄 승객이 더 편하게 내릴 수 있으니까.
먼 나라의 어느 정부가 통근 철도에 자동 운전 장치를 넣기로 했다. 이 장치가 하는 일 중 하나가 역에서 열차를 세우는 것이다. 레이더가 승강장에 서 있는 승객의 위치를 알려 주면, 열차의 컴퓨터는 각 승객에서 가장 가까운 출입문까지의 거리를 모두 더한 값이 최대가 되는 정차 위치를 고른다. 하드웨어는 다 만들었는데 소프트웨어가 늦었다. 이 기능을 구현하라.
승강장의 길이는 L이다. 승강장에 승객이 M명 있고, 승객 p는 승강장 시작점에서 Pp만큼 떨어진 곳에 서 있다. 여기서 0≤P1≤⋯≤PM≤L이다. 열차에는 출입문이 N개 있고, 출입문 d는 1번 출입문에서 Dd만큼 떨어져 있다. 여기서 0=D1<D2<⋯<DN≤L이다. 출입문의 폭과 승객의 크기는 계산에 넣지 않는다.
열차의 정차 위치 S는 승강장 시작점에서 1번 출입문까지의 거리이다. 열차가 S에 섰을 때 승객 i와 출입문 j 사이의 거리는 ∣Dj+S−Pi∣이다. 출입문은 하나도 승강장 밖으로 나가면 안 되므로 0≤S이고 S+DN≤L이다. S가 정수일 필요는 없다. 이 범위 안의 실수면 무엇이든 될 수 있다.
입력은 공백과 줄바꿈으로 구분된 정수로 이루어진다. 승강장 정보가 먼저 나온다. L, M, 그다음 P1…PM 순서이다. 이어서 열차 정보가 나온다. N, 그다음 D2…DN 순서이다. D1은 항상 0이라서 입력에 넣지 않으므로, 열차 정보는 정수 N개이다.
0<L≤5000, 0<M≤300, 0<N≤300이다.
컴퓨터가 최대로 만들려는 값을 F(S)=∑i=1Mmin1≤j≤N∣Dj+S−Pi∣라고 하자. 가능한 모든 정차 위치 S 중에서 F(S)의 최댓값을 구하고, 그 값에 2를 곱해서 출력하라.
이 최댓값은 항상 21의 배수라서 2를 곱하면 정수가 된다. 그 정수 하나만 출력한다.