import sys input = sys.stdin.readline from heapq import heappop,heappush N,M,K=map(int,input().split()) C=list(map(int,input().split())) E=[[] for i in range(N)] for i in range(M): x,y=map(int,input().split()) x-=1 y-=1 E[x].append((y,C[i])) E[y].append((x,C[i])) DP=[[1<<63]*N for i in range(K+1)] DP[0][0]=0 Q=[(0,0,0)] while Q: time,town,coupon=heappop(Q) if DP[coupon][town]!=time: continue for to,dis in E[town]: if DP[coupon][to]>time+dis: DP[coupon][to]=time+dis heappush(Q,(DP[coupon][to],to,coupon)) if coupon+1<=K: if DP[coupon+1][to]>time: DP[coupon+1][to]=time heappush(Q,(DP[coupon+1][to],to,coupon+1)) ANS=1<<63 for i in range(K+1): ANS=min(ANS,DP[i][N-1]) if ANS>1<<62: print(-1) else: print(ANS)