#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll oink(vector<vector<int>> v, int d, int left, int right){
// int m = prices.size();
// if (m == 0){
// return 0;
// }
ll cost = 0;
ll MIN = 1000000000000000000;
for (int i = left; i <= right; i++){
cost += v[i][1];
if (((i - left) % 2 == 0) || (i > left && i + 1 <= right && abs(v[i - 1][0] - v[i + 1][0]) <= d)){
ll diff = v[i][2] - v[i][1];
MIN = min(MIN, diff);
}
}
return cost + MIN;
}
vector<ll> calculate_costs(vector<int> w, vector<int> a, vector<int> b, vector<int> e){
int n = w.size();
vector<ll> ans;
vector<vector<int>> v;
for (int i = 0; i < n; i++){
v.push_back({w[i], b[i], a[i]});
}
sort(v.begin(), v.end());
for (auto &d : e){
// vector<pair<int, int>> prices;
int left = 0; int right = 0;
ll c = 0;
for (int i = 0; i < n; i++){
if (i == 0){
// prices.push_back({v[i][1], v[i][2]});
left = 0;
continue;
}
if (abs(v[i][0] - v[i - 1][0]) <= d){
// prices.push_back({v[i][1], v[i][2]});
right++;
continue;
}
c += oink(v, d, left, right);
left = i; right = i;
// prices.clear();
}
c += oink(v, d, left, right);
ans.push_back(c);
}
return ans;
}