# coding: utf-8 N = int(raw_input()) C = int(raw_input()) V = int(raw_input()) S = map(int, raw_input().split()) T = map(int, raw_input().split()) Y = map(int, raw_input().split()) M = map(int, raw_input().split()) INF = int(1e9+7) # dpテーブル # dp[i][k]=i番目の街で、使用金額k以下の時の最短経路 # 辿りつけない時はINF dp = [[INF for _ in xrange(C+1)] for _ in xrange(N)] dp[0][0]=0 toList = [[] for _ in xrange(N)] for i in xrange(V): toList[S[i]-1].append((T[i]-1, Y[i], M[i])) for i in xrange(N): for k in xrange(C+1): if dp[i][k]!=INF: for t, y, m in toList[i]: if k + y <= C: dp[t][k+y]=min(dp[t][k+y], dp[i][k]+m) res = min(dp[N-1]) if res==INF: print -1 else: print res