#include <bits/stdc++.h>
using namespace std;
long long delivery(int n, int k, int len, int p[]) {
vector<int> pos;
for (int i = 0; i < n; i++) {
pos[i] = p[i];
}
n = pos.size();
deque<int> l, r;
for (int i = 0; i < n; i++) {
if (pos[i] <= len / 2) {
l.push_back(pos[i]);
} else {
r.push_back(pos[i]);
}
}
ranges::reverse(r);
long long ans = 0;
for (int i = k - 1; i < l.size(); i += k) {
ans += l[i] * 2;
}
for (int i = k - 1; i < r.size(); i += k) {
ans += (len - r[i]) * 2;
}
while (l.size() >= k) {
for (int i = 0; i < k; i++) {
l.pop_front();
}
}
while (r.size() >= k) {
for (int i = 0; i < k; i++) {
r.pop_front();
}
}
if (!l.empty() && !r.empty() && l.size() + r.size() <= k) {
ans += len;
} else {
if (!l.empty()) ans += l.back() * 2;
if (!r.empty()) ans += (len - r.back()) * 2;
}
return ans;
}