INF=10**10 N=int(input()) C=int(input()) V=int(input()) S=list(map(int,input().split())) T=list(map(int,input().split())) Y=list(map(int,input().split())) M=list(map(int,input().split())) g=[[] for _ in range(N)] for i in range(V): g[S[i]-1].append([T[i]-1,Y[i],M[i]]) g[T[i]-1].append([S[i]-1,Y[i],M[i]]) from heapq import heappop, heappush, heapify heap=[(0,C,0)] heapify(heap) dp=[[INF for _ in range(C+1)] for _ in range(N)] while heap: mm,cc,u = heappop(heap) dp[u][cc]=mm for v,y,m in g[u]: if cc-y<0:continue if dp[v][cc-y]>mm+m: heappush(heap,(mm+m,cc-y,v)) print(-1 if min(dp[N-1])==INF else min(dp[N-1]))