#coding: utf-8 #yuki_001 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=float("inf") dp=[[INF for i in xrange(c+1)] for j in xrange(n)] dp[0][0]=0 G=[[] for i in xrange(n)] for i in xrange(v): G[s[i]-1].append((t[i]-1,y[i],m[i])) for i in xrange(n): for j in xrange(c+1): if dp[i][j]!=INF: for t,y,m in G[i]: if j+y<=c: dp[t][j+y]=min(dp[t][j+y],dp[i][j]+m) res=min(dp[n-1]) if res==INF: print -1 else: print res