사탕 배달
시간 제한3초메모리 제한1024 MB
오른쪽이나 아래로만 이동하며 모든 집을 배달해야 할 때, 필요하면 (1,1)로 되돌아가 다시 시작할 수 있다. 총 소요 시간의 최솟값을 구한다.
문제
안즈가 전 재산을 투자해 시작한 사탕 사업이 입소문을 타고 엄청난 호황을 누리고 있다! 인건비 절약을 위해, 안즈는 공장에서 만들어진 사탕을 직접 배달하기로 한다.

안즈가 사탕을 배달해야 하는 지역은 크기의 격자로 이루어져 있다. 격자의 행 열에 위치한 칸을 라고 정의하자.
한 번의 배달은 격자의 에서 시작해 에서 끝나야 한다. 이 지역의 도로는 모두 일방통행이기 때문에, 배달을 할 때는 무조건 아래쪽이나 오른쪽으로만 이동해야 한다. 즉, 현재 에 있다면 , 또는 로만 이동할 수 있다. 에서 다른 칸으로 이동할 때에는 의 시간이 소요된다.
안즈는 총 개의 집에 사탕을 배달해야 한다. 안즈가 어떤 집이 있는 칸으로 이동했다면, 해당하는 집에 사탕 배달을 완료한 것이다. 한 번의 배달로 모든 집에 사탕을 배달하지 못할 수도 있기 때문에, 배달을 여러 번 진행할 수 있다. 배달을 다시 시작하기 위해 에서 로 다시 돌아오는 데에는 의 시간이 소요된다. 배달은 원하는 만큼 여러 번 진행할 수 있으며, 배달 횟수를 최소화할 필요는 없다.
안즈는 모든 집에 사탕 배달을 완료한 후, 까지 이동하여 배달을 마치기까지 얼마나 시간이 걸릴지 알고 싶다. 하지만 안즈는 이것을 직접 계산하기에는 너무 귀찮았기 때문에, 여러분에게 해결을 부탁했다.
입력
첫 번째 줄에 , , 가 공백으로 구분되어 주어진다. (; )
이어서 개의 줄에 걸쳐, 수 개가 공백으로 구분되어 주어진다. 번째 줄의 번째 수는 를 나타낸다. ()
이어서 개의 줄에 걸쳐, 번째 집의 위치 가 공백으로 구분되어 주어진다. 모든 집의 위치는 서로 다르며, 이나 에는 집이 존재하지 않는다. (; )
출력
안즈가 모든 집에 사탕 배달을 완료한 후, 까지 이동하여 배달을 마치기까지 소요되는 시간의 최솟값을 출력한다.