#include #include #include #include #include #include using namespace std; typedef pairpint; typedef vectorvint; #define pb push_back #define mp make_pair #define rep(i,n) for(int i=0;i<(n);i++) templatevoid chmin(T &t,U f){if(t>f)t=f;} templatevoid chmax(T &t,U f){if(tG[50]; int X[1500],Y[1500],Z[1500],W[1500]; const int INF=1001001001; int dp[50][301]; int main(){ cin.tie(0); ios_base::sync_with_stdio(0); cin>>N>>C>>M; rep(i,M)cin>>X[i]; rep(i,M)cin>>Y[i]; rep(i,M)cin>>Z[i]; rep(i,M)cin>>W[i]; rep(i,M){ G[--X[i]].pb(edge(--Y[i],Z[i],W[i])); } fill_n(*dp,50*301,INF); dp[0][0]=0; rep(i,N){ rep(j,C+1){ rep(k,G[i].size()){ edge &e=G[i][k]; if(j+e.cost>C)continue; chmin(dp[e.to][j+e.cost],dp[i][j]+e.t); } } } int ans=*min_element(dp[N-1],dp[N-1]+C+1); if(ans==INF)cout<<"-1"<