여행하는 톰

아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

톰은 중고 아이스크림을 파는 상인이다. 노점 매출이 신통치 않아서 세계 곳곳의 도시를 돌며 물건을 팔기로 했다. 방문할 도시 목록과 도시 사이를 오가는 모든 항공편 요금은 이미 정리해 두었고, 이제 여행 비용이 얼마나 드는지만 계산하면 된다.

톰은 목록의 첫 도시에서 출발해 목록에 적힌 순서대로 도시를 방문하고, 마지막 도시를 방문한 뒤에는 출발한 도시로 돌아온다. 목록에서 다음 차례가 아닌 도시를 거쳐 가는 항공편을 더 타도 된다. 목록의 도시는 올바른 상대 순서로 도착했을 때만 방문한 것으로 센다. 예를 들어 목록이 1 0 2이면 경로 1 2 0 2 1은 유효하지만, 1 2 0 1은 도시 0 다음에 도시 2에 도착하지 않으므로 유효하지 않다.

이런 여행의 최소 총 요금을 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 도시의 수 NN이 주어진다. 도시에는 00번부터 N1N-1번까지 번호가 붙어 있다. 다음 줄에는 톰이 도시를 방문하는 순서 a1,a2,,aNa_1, a_2, \dots, a_NNN개의 정수로 주어진다. 이어지는 NN개의 줄에는 각각 NN개의 정수가 주어지고, 그중 ii번째 줄의 jj번째 정수는 도시 ii에서 도시 jj로 가는 항공편 요금 cijc_{ij}이다. 도시 ii에서 도시 jj로 가는 항공편이 없으면 cijc_{ij}1-1이다.

  • 0<T1000 < T \le 100
  • 0<N2000 < N \le 200
  • 0ai<N0 \le a_i < N이고, 방문 순서는 항상 00부터 N1N-1까지의 순열이다
  • 1cij10000-1 \le c_{ij} \le 10000
  • 모든 도시 ii에 대해 cii=0c_{ii} = 0이다

출력

각 테스트 케이스마다 여행의 최소 총 요금을 한 줄에 출력한다. 여행을 마칠 수 없으면 대신 impossible을 출력한다.