#include #include #define INF (2 << 28) using namespace std; int n, c, v, dp[55][333]; int s[1511], t[1511], y[1511], m[1511]; int rec(int now, int cost){ if(cost < 0) return INF; if(dp[now][cost]) return dp[now][cost]; if(now == n) return 0; int ret = INF; for(int i = 0; i < v; i++){ if(s[i] == now){ ret = min(ret, rec(t[i], cost - y[i]) + m[i]); } } return dp[now][cost] = ret; } int main(){ cin >> n >> c >> v; for(int i = 0; i < v; i++) cin >> s[i]; for(int i = 0; i < v; i++) cin >> t[i]; for(int i = 0; i < v; i++) cin >> y[i]; for(int i = 0; i < v; i++) cin >> m[i]; int d; if((d = rec(1, c)) == INF) cout << -1 << endl; else cout << d << endl; }