#include using namespace std; #define rep(i,n) for (int i = 0; i < (int)(n); ++i) #define rrep(i,n) for (int i = (int)(n-1); i >= 0; --i) #define Rep(i,a,b) for (int i = a; i < b; ++i) #define rRep(i,a,b) for (int i = a; i > b; --i) #define fore(i,a) for(auto &i:a) #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define Bit(x,i) (((x)>>(i))&1) using ll = long long; using vi = vector; using vll = vector; using vvi = vector; using vvll = vector; using vb = vector; using vs = vector; using pii = pair; using pll = pair; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> G(55); int main() { int N; cin >> N; int C; cin >> C; int V; cin >> V; rep(i, V) cin >> S[i]; rep(i, V) cin >> T[i]; rep(i, V) cin >> Y[i]; rep(i, V) cin >> M[i]; rep(i, V) G[S[i]-1].push_back({T[i]-1, i}); dp[0][0] = 0; rep(i, N) { fore(nx, G[i]) { rep(j, C+1) { if(j + Y[nx.second] <= C) chmin(dp[nx.first][j + Y[nx.second]], dp[i][j] + M[nx.second]); } } } ll ans = LINF; rep(j, C+1) { chmin(ans, dp[N-1][j]); } if(ans == LINF) cout << -1 << endl; else cout << ans << endl; }