import heapq N,C,V = int(input()),int(input()),int(input()) S = [int(i) - 1 for i in input().split()] T = [int(i) - 1 for i in input().split()] Y = [int(i) for i in input().split()] M = [int(i) for i in input().split()] cost = [[-1 for j in range(N)]for i in range(N)] time = [[-1 for j in range(N)] for i in range(N)] for i in range(V): cost[S[i]][T[i]] = Y[i] for i in range(V): time[S[i]][T[i]] = M[i] def dijkstra(): q = [(0,C,0)] while len(q) > 0: d = heapq.heappop(q) if d[2] == N - 1 and d[1] >= 0: return d[0] for i in range(N): if d[2] == i or cost[d[2]][i] == -1 or time[d[2]][i] == -1: continue heapq.heappush(q,(d[0] + time[d[2]][i],d[1] - cost[d[2]][i],i)) return -1 print(dijkstra())