#include "bits/stdc++.h"
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pii pair<int,int>
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define pb push_back
#define sz(x) (int)(x).size()
#define rsz resize
#define ass assign
#define F(i,l,r) for(int i=(l);i<(r);++i)
typedef long long ll;
typedef unsigned long long ull;
typedef long double lld;
//template<typename T> using pqg = priority_queue<T, vector<T>, greater<T>>;
#define each(a,x) for(auto a:x)
#define FOR(i,a) for(int i=0;i<(a);i++)
#define ROF(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define eb emplace_back
#define ft front()
#define V vector
#ifndef ONLINE_JUDGE
#define debug(x) cerr << #x <<" "; _print(x); cerr << endl;
#else
#define debug(x)
#endif
void _print(ll t) {cerr << t;}
void _print(int t) {cerr << t;}
void _print(string t) {cerr << t;}
void _print(char t) {cerr << t;}
void _print(lld t) {cerr << t;}
void _print(double t) {cerr << t;}
void _print(ull t) {cerr << t;}
template <class T, class V> void _print(pair <T, V> p);
template <class T> void _print(vector <T> v);
template <class T> void _print(set <T> v);
template <class T, class V> void _print(map <T, V> v);
template <class T> void _print(multiset <T> v);
template <class T, class V> void _print(pair <T, V> p) {cerr << "{"; _print(p.ff); cerr << ","; _print(p.ss); cerr << "}";}
template <class T> void _print(vector <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(set <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(multiset <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T, class V> void _print(map <T, V> v) {cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";}
struct artecfact{
int w,a,b;
bool operator<(const artecfact& x) const {
return w<x.w;
}
};
V<ll> calculate_costs(V<int> W,V<int> A,V<int> B,V<int> E){
int n=sz(W),q=sz(E);
V<artecfact> items(n);
FOR(i,n)items[i]={W[i],A[i],B[i]};
sort(items.begin(),items.end());
V<ll> res(q);
const ll inf=1e18;
FOR(j,q){
ll d=E[j];
V<ll> dp(n+1,0);
if(n>=1)dp[1]=items[0].a;
if(n>=2){
ll alone=dp[1]+items[1].a,cost=inf;
if(items[1].w-items[0].w<=d)cost=(ll)items[0].b+items[1].b;
dp[2]=min(alone,cost);
}
F(i,3,n+1){
int id=i-1;
ll cost=dp[i-1]+items[id].a;
if(items[id].w-items[id-1].w<=d){
ll cur=dp[i-2]+items[id-1].b+items[id].b;
cost=min(cost,cur);
}
if(items[id].w-items[id-2].w<=d){
ll jump=dp[i-3]+items[id-2].b+items[id-1].a+items[id].b;
cost=min(cost,jump);
}
dp[i]=cost;
}
res[j]=dp[n];
}
return res;
}