inf = 10**9 def get_paths(n,cost,time): if n == N-1: return time res = inf for i in xrange(n+1,N): for y,m in G[n][i]: if cost+y > C: continue res = min(res,get_paths(i,cost+y,time+m)) return res N,C,V = [int(raw_input()) for i in range(3)] S,T,Y,M = [map(int,raw_input().split()) for i in range(4)] G = [[[] for i in xrange(N)] for j in xrange(N)] for s,t,y,m in zip(S,T,Y,M): G[s-1][t-1].append([y,m]) ans = get_paths(0,0,0) print ans if ans < inf else -1