from heapq import heappush, heappop import math def solve(): N, M, K = map(int, input().split()) C = list(map(int, input().split())) graph = [[] for _ in range(N + 1)] for i in range(M): u, v = map(int, input().split()) graph[u].append((v, C[i])) graph[v].append((u, C[i])) dist = [[math.inf] * (K + 1) for _ in range(N + 1)] dist[1][K] = 0 pq = [(0, 1, K)] while pq: cost, v, k = heappop(pq) if cost > dist[v][k]: continue for u, c in graph[v]: if dist[u][k] > cost + c: dist[u][k] = cost + c heappush(pq, (cost + c, u, k)) if k > 0 and dist[u][k - 1] > cost: dist[u][k - 1] = cost heappush(pq, (cost, u, k - 1)) min_cost = min(dist[N]) if min_cost == math.inf: print(-1) else: print(min_cost) solve()