#include <fstream>
#define inf 16830
using namespace std;
ifstream f("ubuntzei.in");
ofstream g("ubuntzei.out");
int c[201][201],d[201],use[201],n,m,k,c1[201];
void citire()
{ int i,j,x,y,cost;
f>>n>>m;
f>>k;
for(i=1;i<=k;i++)
f>>c1[i];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j) c[i][j]=0;
else c[i][j]=inf;
for(i=1;i<=m;i++)
{f>>x>>y>>cost;
c[x][y]=cost;
c[y][x]=cost;
}
}
void dijkstra()
{int x,min1,i;
for(i=1;i<=n;i++) d[i]=inf;
d[1]=0;
while(1)
{min1=inf;
for(i=1;i<=n;i++)
if(!use[i]&&d[i]<min1)
{min1=d[i];
x=i;
}
if(min1==inf) break;
use[x]=1;
for(i=1;i<=n;i++)
if(d[x]+c[x][i]<d[i])
{d[i]=d[x]+c[x][i];
//t[i]=x;
}
}
}
int main()
{ citire();
dijkstra();
g<<d[n]<<endl;
return 0;
}