M = 10**6 I = lambda:map(int,raw_input().split()) i = lambda:input() N,C,V = i(),i(),i() L = [[] for i in xrange(V)] for s,t,y,m in zip(I(),I(),I(),I()): L[s-1].append((t-1,y,m)) dp = [[M]*(C+1) for _ in xrange(N)] dp[0][0] = 0 for s in xrange(N-1): for c in xrange(C): if dp[s][c] == M: continue tmp = dp[s][c] for t,y,m in L[s]: if c+y > C: continue if tmp + m < dp[t][c+y]: dp[t][c+y] = tmp + m ans = min(dp[N-1]) print - 1 if ans == M else ans