import heapq N,M,K = map(int,input().split()) C = [0]+list(map(int,input().split())) G = {i:[] for i in range(1,(K+1)*N+1)} for i in range(1,M+1): u,v = map(int,input().split()) G[u].append((v,C[i])) G[v].append((u,C[i])) for k in range(1,K+1): G[u+k*N].append((v+k*N,C[i])) G[v+k*N].append((u+k*N,C[i])) G[u+k*N].append((v+(k-1)*N,0)) G[v+k*N].append((u+(k-1)*N,0)) INFTY = 10**14+100 dist = [INFTY]*((K+1)*N+1) dist[1+K*N] = 0 que = [(0,1+K*N)] while que: d,x = heapq.heappop(que) if dist[x]d+c: dist[y] = d+c heapq.heappush(que,(d+c,y)) ans = dist[N] for i in range(1,K+1): ans = min(ans,dist[i*N]) if ans>=INFTY: print(-1) else: print(ans)