#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
using ll = long long;
using pr = pair<int, int>;
// const int INF = 1e9+7, MOD = 1e9+7;
const ll INF = 1e18;
vector<int> a;
int n, k, l;
vector<ll> deepee(const vector<int>& a, int s) {
vector<ll> dp(n+1, INF);
dp[0] = 0;
multiset<ll> cur;
cur.insert(0);
for (int i = 1; i <= n; i++) {
if (i > k) {
cur.erase(cur.find(dp[i-k-1]));
}
// for (auto j : cur) cout << j.first << ' ';
// cout << '\n';
auto mn = *cur.begin();
int d = abs(a[i-1]-s) + min(a[i-1], l - a[i-1]);
dp[i] = mn + d;
cur.insert(dp[i]);
}
return dp;
}
long long delivery(int N, int K, int L, int p[]) {
n = N; k = K; l = L;
a.resize(n, 0);
for (int i = 0; i < n; i++) a[i] = p[i];
vector<ll> pref = deepee(a, 0);
reverse(a.begin(), a.end());
vector<ll> suff = deepee(a, l);
ll res = INF;
// res = min(pref[n], suff[n]);
for (int i = 0; i <= n; i++) {
res = min(res, pref[i] + suff[n-i]);
}
// cout << res;
return res;
}