#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
long long delivery(int N, int K, int L, int p[]) {
ll dp[N];
fill(dp, dp + N, 1e18);
dp[0] = 2 * (p[0] - 0);
dp[N - 1] = 2 * (L - p[N - 1]);
for (int i = 1; i < N; i++) dp[i] = min(dp[i], dp[i - 1] + 2 * (p[i] - p[i - 1]));
for (int i = N - 2; i >= 0; i--) dp[i] = min(dp[i], dp[i + 1] + 2 * (p[i + 1] - p[i]));
int l = -1, r = N;
int mid = L / 2;
ll ans = 0;
while (p[min(N - 1, l + 1)] == 0) l++;
while (p[min(N - 1, l + K)] <= mid) {
l += K;
ans += dp[l];
}
while (p[max(0, r - K)] > mid) {
r -= K;
ans += dp[r];
}
//cout << ans << " " << l << " " << r << " " << r - l - 1 << "\n";
if (r - l == 1) return ans;
if (p[l + 1] > mid) return ans + dp[l + 1];
if (p[r - 1] <= mid) return ans + dp[r - 1];
if (r - l - 1 <= K) return ans + L;
return ans + L + min(dp[l + K + 1], dp[r - K - 1]);
}