#include #define REP(i,n) for(int i=0,i##_len=(n);i>N>>C>>V; vector> E(V,vector(4)),dp(N+1,vector(C+1,inf)); REP(i,4) REP(j,V) cin>>E[j][i]; vector>> to(N); REP(i,V){ int s=E[i][0]-1,t=E[i][1]-1,y=E[i][2],m=E[i][3]; to[s].push_back(tie(t,y,m)); } dp[0][C]=0; REP(u,N){ REP(i,to[u].size()){ int v,y,m; tie(v,y,m)=to[u][i]; REP(j,C+1){ if(j+y<=C) dp[v][j]=min(dp[v][j],dp[u][j+y]+m); } } } int ans=inf; REP(i,C+1) ans=min(ans,dp[N-1][i]); if(ans==inf) cout<<-1<