#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define loop(i,a,b) for(int i=a;i pii; typedef vector vi; typedef vector vvi; typedef vector vp; typedef vector vvp; typedef vector vs; typedef vector vd; typedef tuple tp; typedef vector vt; typedef vector vvd; typedef pair pip; typedef vectorvip; const double PI=acos(-1); const double EPS=1e-7; const int inf=1e8; const ll INF=1e16; int dx[4]={0,1,0,-1}; int dy[4]={1,0,-1,0}; int main(){ int n,c; cin>>n>>c; vectorG(n); int m; cin>>m; vvi in(4,vi(m)); rep(i,4)rep(j,m)cin>>in[i][j]; rep(i,m)G[in[0][i]-1].pb(mt(in[1][i]-1,in[2][i],in[3][i])); vvi dp(n+1,vi(c+1,inf)); dp[0][c]=0; queueque; que.push(mt(0,c,0)); while(!que.empty()){ int a,b,c; tie(a,b,c)=que.front(); que.pop(); if(dp[a][b]nc){ dp[to][nb]=nc; que.push(mt(to,nb,nc)); } } } int out=inf; rep(i,c+1)out=min(out,dp[n-1][i]); if(out==inf)out=-1; cout<