from heapq import heappush, heappop from collections import defaultdict INF = 1 << 60 N, M, K = map(int, input().split()) C = list(map(int, input().split())) adj = defaultdict(list) for i in range(M): u, v = map(lambda x: int(x)-1, input().split()) adj[u].append((v, C[i])) adj[v].append((u, C[i])) dists = [[INF] * N for _ in range(K+1)] q = [(0, 0, 0)] while q: cost, k, v = heappop(q) if dists[k][v] <= cost: continue dists[k][v] = cost for to, w in adj[v]: c = cost + w if c < dists[k][to]: heappush(q, (c, k, to)) if k < K and cost < dists[k+1][to]: heappush(q, (cost, k+1, to)) ans = min(dists[k][N-1] for k in range(K+1)) if ans == INF: print(-1) else: print(ans)