#include "nile.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll func(vector<ll>v, vector<ll>a, vector<ll>b, ll c)
{
ll n = v.size();
vector<array<ll,3>>vp;
for (int i=0 ; i<n ;i++)
vp.push_back({v[i], a[i], b[i]});
vp.push_back({INT_MIN, 67, 67});
sort(vp.begin(), vp.end());
vector<vector<ll>>dp(n+1, vector<ll>(3, INT_MAX));
dp[0][0] = 0;
for (int i=1 ; i<=n ;i++)
{
dp[i][0] = min({dp[i-1][0], dp[i-1][1], dp[i-1][2]})+vp[i][1];
if (i>1 and vp[i][0]-vp[i-1][0]<=c) dp[i][1] = min({dp[i-2][0], dp[i-2][1], dp[i-2][2]})+vp[i-1][2]+vp[i][2];
if (i>2 and vp[i][0]-vp[i-2][0]<=c) dp[i][2] = min({dp[i-3][0], dp[i-3][1], dp[i-3][2]})+vp[i-2][2]+vp[i-1][1]+vp[i][2];
}
return min({dp[n][0], dp[n][1], dp[n][2]});
}
std::vector<long long> calculate_costs(std::vector<int> W, std::vector<int> A,
std::vector<int> B, std::vector<int> E) {
vector<long long>res;
vector<ll>w, a, b;
for (auto i:W) w.push_back(i);
for (auto i:A) a.push_back(i);
for (auto i:B) b.push_back(i);
for (int i=0 ; i<E.size() ; i++)
res.push_back(func(w, a, b, E[i]));
return res;
}