#include "bits/stdc++.h" using namespace std; #define MAX 99999999 int main() { int N, C, V; cin >> N >> C >> V; vector S(V), T(V), Y(V), M(V); for (int i = 0; i < V; i++) { cin >> S[i]; S[i]--; } for (int i = 0; i < V; i++) { cin >> T[i]; T[i]--; } for (int i = 0; i < V; i++) { cin >> Y[i]; } for (int i = 0; i < V; i++) { cin >> M[i]; } vector>> e(N); for (int i = 0; i < V; i++) { e[S[i]].push_back(make_tuple(T[i], Y[i], M[i])); } vector> dp(N, vector(C + 1, MAX)); dp[0][C] = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < C + 1; j++) { if (dp[i][j] == MAX) continue; for (auto k: e[i]) { int ni = get<0>(k); int nj = j - get<1>(k); int nd = dp[i][j] + get<2>(k); if (nj < 0) continue; dp[ni][nj] = min(dp[ni][nj], nd); } } } int ans = MAX; for (int j = 0; j < C + 1; j++) { ans = min(ans, dp[N - 1][j]); } if(ans == MAX) cout << -1 << endl; else cout << ans << endl; }