#include using namespace std; int main() { const int inf = 10000000; 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.at(i); s.at(i)--; } for (int i = 0; i < v; i++) { cin >> t.at(i); t.at(i)--; } for (int i = 0; i < v; i++) { cin >> y.at(i); } for (int i = 0; i < v; i++) { cin >> m.at(i); } vector>> from(n); for (int i = 0; i < v; i++) { from.at(t.at(i)).emplace_back(s.at(i), y.at(i), m.at(i)); } vector> dp(n, vector(c + 1, inf)); dp.at(0).at(0) = 0; for (int i = 1; i < n; i++) { for (int j = 0; j <= c; j++) { for (auto x : from.at(i)) { int si = get<0>(x), yi = get<1>(x), mi = get<2>(x); if (j < yi) continue; dp.at(i).at(j) = min(dp.at(i).at(j), dp.at(si).at(j - yi) + mi); } } } int ans = *min_element(dp.at(n - 1).begin(), dp.at(n - 1).end()); if (ans < inf) { cout << ans << endl; } else { cout << -1 << endl; } }