#define L(a,b)((a)<(b)?(a):(b))
N,C[498][201],D[1000][201],i,j,k;W(int c[][201]){for(k=N;k;c[k][k]=0,k--)for(i=N;i;i--)for(j=N;j;j--)c[i][j]=L(c[i][j],c[i][k]+c[k][j]);}x,y,t,s;main(M){for(;scanf("%d%d",&N,&M)*N;printf("%d\n",s)){for(memset(C,1,4e5);M--;C[s+x][y]=C[s+y][x]=L(C[s+x][y],t))scanf("%d%d%d%s",&x,&y,&t,&s),s=s%2*N;W(C);W(C+N);memset(D,1,1e3);scanf("%d%d",&M,&x);D[0][x]=0;for(i=1;i<M;i++,x=y)for(scanf("%d",&y),s=1e9,j=N;j;s=L(s,t),D[i][j--]=t)for(t=D[i-1][j]+C[x][y],k=N;k;k--)t=L(t,D[i-1][k]+C[x][k]+C[N+k][j]+C[j][y]);}}