#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;
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});
for(auto d:E){
while(diff.size()&&diff.begin()->first<=d){
ll x=diff.begin()->second;
diff.erase(diff.begin());
ans-=no[dsu(x)]+no[dsu(x)]%2;
ans-=no[dsu(x-1)]+no[dsu(x-1)]%2;
no[dsu(x)]+=no[dsu(x-1)];
par[dsu(x-1)]=dsu(x);
ans+=no[dsu(x)]+no[dsu(x)]%2;
}
anss.push_back(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})
// }