#include "nile.h"
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct artifact {
int weight;
int good;
int bad;
auto operator<=>(const artifact&) const = default;
};
std::vector<long long> calculate_costs(std::vector<signed> weights, std::vector<signed> bad, std::vector<signed> good, std::vector<signed> queries) {
int N = weights.size();
vector<artifact> arts{};
for (int i = 0; i < N; ++i) {
arts.push_back({weights[i], good[i], bad[i]});
}
ranges::sort(arts);
int Q = (int)queries.size();
vector<long long> ret(Q, 0);
for (int query = 0; query < Q; ++query) {
vector<int> dp(N + 2, INT_MAX);
dp[0] = 0;
for (int i = 0; i < N; ++i) {
dp[i+1] = min(dp[i+1], dp[i] + arts[i].bad);
if (i < N-1) {
if (arts[i+1].weight - arts[i].weight <= queries[query]) {
dp[i+2] = min(dp[i+2], dp[i] + arts[i].good + arts[i+1].good);
}
}
if (i < N-2) {
if (arts[i+2].weight - arts[i].weight <= queries[query]) {
dp[i+3] = min(dp[i+3], dp[i] + arts[i].good + arts[i+1].bad + arts[i+2].good);
}
}
}
ret[query] = dp[N];
}
return ret;
}