이동 서비스

시간 제한3초메모리 제한128 MB

문제

한 회사가 여러 도시에 흩어져 있는 고객에게 서비스를 제공한다. 회사에는 서비스 직원이 세 명 있다. 어떤 위치에서 요청이 들어오면, 그 위치에 직원이 이미 있지 않은 한, 직원 한 명이 자신의 현재 위치에서 요청이 발생한 위치로 이동하여 요청을 처리해야 한다. 한 순간에는 오직 한 명만 이동할 수 있으며, 직원들은 요청이 있을 때만 이동하고 두 명이 같은 위치에 있을 수는 없다.

한 직원을 위치 $p$에서 위치 $q$로 이동시키는 데에는 주어진 비용 $C(p, q)$가 든다. 이 비용 함수는 대칭이 아닐 수 있지만, 이동하지 않는 비용은 $0$이다. 즉 $C(p, p) = 0$이다. 회사는 받은 요청을 반드시 들어온 순서대로(선착순으로) 처리해야 한다.

주어진 요청 순서를 처리하는 총 비용이 최소가 되도록 각 요청을 어느 직원이 처리할지 정할 때, 그 최소 총 비용을 구하라.

입력

첫째 줄에 두 정수 $L$과 $N$이 주어진다. $L$($3 \le L \le 200$)은 위치의 수, $N$($1 \le N \le 1000$)은 요청의 수이다. 위치는 $1$부터 $L$까지의 정수로 구분된다.

다음 $L$개의 줄에는 각각 $L$개의 음이 아닌 정수가 주어진다. $i+1$번째 줄의 $j$번째 수는 비용 $C(i, j)$이며, $2000$보다 작다.

마지막 줄에는 요청 목록을 나타내는 $N$개의 정수가 주어진다. 각 요청은 요청이 발생한 위치의 번호로 주어진다. 처음에 세 직원은 각각 위치 $1$, $2$, $3$에 있다.

출력

요청 순서 전체를 처리하는 데 드는 최소 총 비용 $M$을 하나의 정수로 출력한다.