FJUT一共有M栋楼。学院里有一个由3人组成的志愿者团队。现在,这M栋楼中一共有N个请求,如果学院某栋楼有一个请求,则其中某个志愿者必须赶到那栋楼去(那栋楼没有其他志愿者),某一时刻只有一个志愿者能移动。被请求后,他才能移动,不允许在同一栋楼出现两个志愿者。志愿者若从a栋移动到b栋,需要消耗F(a,b)的体力。若必须按顺序满足所有的请求,求3人消耗的体力总和的最小值。
第一行有两个整数M,N,含义如题。楼从1到M编号。
接下来有M行,每行包含M个非负整数。第i+1行的第j个数表示F(i,j) ,0<=F(i,j)<2000。最后一行包含N个数,是请求列表。一开始三个志愿者分别在1栋,2栋,3栋。
对于所有的数据(3<=M<=200, 1<=N<=1000)
一个数S,表示最少3人消耗的体力总和。
5 9 0 1 1 1 1 1 0 2 3 2 1 1 0 4 1 2 1 5 0 1 4 2 3 4 0 4 2 4 1 5 4 3 2 1
5