#include <bits/stdc++.h>
#include "nile.h"
using namespace std;
vector<long long> calculate_costs(vector<int> W, vector<int> A,
vector<int> B, vector<int> E) {
int N = W.size();
int Q = (int)E.size();
vector < array<int,3> > arr;
for (int i = 0; i < N; i++) {
arr.push_back({W[i],A[i],B[i]});
}
sort(arr.begin(),arr.end());
vector <long long> c(N);
for (int i = 0; i < N; i++) {
c[i] = arr[i][1]-arr[i][2];
}
vector <array<int,3>> lst;
for (int i = 0; i < N-1; i++) {
lst.push_back({arr[i+1][0] - arr[i][0],-2,i});
if (i+2 < N) lst.push_back({arr[i+2][0] - arr[i][0],-1,i});
}
for (int i = 0; i < Q; i++) {
lst.push_back({E[i],0,i});
}
sort(lst.begin(),lst.end());
//dsu
long long ans = 0;;
vector <int> par(N);
vector <long long> bsum(N);
vector <int> sz(N);
vector <int> l(N);
vector <array<long long,2>> mn(N);
vector <long long> mn1(N);
for (int i = 0; i < N; i++) {
ans += arr[i][2];
l[i] = i;
par[i] = i;
bsum[i] = arr[i][2];
sz[i] = 1;
mn[i][0] = mn[i][1] = 1e9;
mn[i][i&1] = c[i];
mn1[i] = 1e9;
}
function<int(int)> getpar = [&](int x) {
if (x == par[x]) return x;
return par[x] = getpar(par[x]);
};
auto getans = [&](int x) {
return (bsum[x] + (sz[x]&1 ? min(mn1[x],mn[x][l[x]&1]):0));
};
auto unionset = [&](int a, int b) {
a = getpar(a);
b = getpar(b);
if (a == b) return;
ans -= getans(a);
ans -= getans(b);
sz[a] += sz[b];
mn1[a] = min(mn1[a],mn1[b]);
l[a] = min(l[a],l[b]);
par[b] = a;
bsum[a] += bsum[b];
mn[a][0] = min(mn[a][0],mn[b][0]);
mn[a][1] = min(mn[a][1],mn[b][1]);
ans += getans(a);
};
vector<long long> R(Q, 0);
for (auto cur:lst) {
if (cur[1] == 0) R[cur[2]] = ans;
if (cur[1] == -2) {
unionset(cur[2],cur[2]+1);
}
if (cur[1] == -2) {
int x = getpar(cur[2]);
int y = getpar(cur[2]+2);
if (x != y) continue;
ans -= getans(x);
mn1[x] = min(mn1[x],c[cur[2]+1]);
ans += getans(x);
}
}
return R;
}