#include using namespace std; using int64 = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; cin >> T; while (T--) { int N; int64 K; cin >> N >> K; vector A(N), B(N), C(N), D(N); for (int i = 0; i < N; i++) cin >> A[i]; for (int i = 0; i < N; i++) cin >> B[i]; for (int i = 0; i < N; i++) cin >> C[i]; for (int i = 0; i < N; i++) cin >> D[i]; map mp; int64 total = 0; int64 ans = 0; for (int i = N - 1; i >= 0; i--) { mp[C[i]] += D[i]; total += D[i]; int64 buy = B[i]; while (buy > 0 && !mp.empty()) { auto it = prev(mp.end()); int64 v = it->first; int64 cnt = it->second; if (v <= A[i]) break; int64 take = min(buy, cnt); ans += take * (v - A[i]); it->second -= take; if (it->second == 0) { mp.erase(it); } mp[A[i]] += take; buy -= take; } while (total > K) { auto it = mp.begin(); int64 take = min(total - K, it->second); it->second -= take; total -= take; if (it->second == 0) { mp.erase(it); } } } cout << (long long)ans << '\n'; } return 0; }