#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e5+5;
ll par[maxn],no[maxn];
// ll sol(vector<array<ll,3>>arr,ll d){
// ll ans=1e18,sum=0,n=arr.size();
// for(auto i:arr) sum+=i[2];
// if(n%2==0) return sum;
// for(int i=0;i<arr.size();i++) if(i%2==0||arr[i+1][0]-arr[i-1][0]<=d) ans=min(ans,sum+arr[i][1]-arr[i][2]);
// return ans;
// }
ll dsu(ll x){
if(x==par[x]) return x;
return par[x]=dsu(par[x]);
}
std::vector<long long> calculate_costs(std::vector<int> W, std::vector<int> A,std::vector<int> B, std::vector<int> E){
ll n=W.size();
vector<ll>anss(E.size());
array<ll,3>arr[n+5];
ll ans=0;
for(int i=0;i<n;i++) arr[i]={W[i],A[i],B[i]},par[i]=i,no[i]=1,ans+=2;
sort(arr,arr+n);
set<pair<ll,ll>>diff;
for(int i=1;i<n;i++) diff.insert({arr[i][0]-arr[i-1][0],i});
vector<pair<ll,ll>>ds;
for(int i=0;i<E.size();i++) ds.push_back({E[i],i});
sort(ds.begin(),ds.end());
for(auto [d,idd]:ds){
while(diff.size()&&diff.begin()->first<=d){
ll x=diff.begin()->second;
diff.erase(diff.begin());
ll a=dsu(x),b=dsu(x-1);
ans-=no[a]+no[a]%2;
ans-=no[b]+no[b]%2;
no[a]+=no[b];
par[b]=a;
ans+=no[a]+no[a]%2;
}
anss[idd]=ans;
}
return anss;
}
// int main(){
// calculate_costs({15, 12, 2, 10, 21},
// {5, 4, 5, 6, 3},
// {1, 2, 2, 3, 2},
// {5, 9, 1})
// }