#include <bits/stdc++.h>
using i64 = long long;
using i128 = __int128_t;
#ifdef DEBUG
#include "/home/ahmetalp/Desktop/Workplace/debug.h"
#else
#define debug(...) void(23)
#endif
constexpr int max_N = int(1E5) + 5;
int N;
int K;
int T;
int X[max_N];
i128 Y[max_N];
bool check(int s) {
for (int i = 0; i < N; ++i) {
Y[i] = X[i] - i128(2) * i * T * s;
}
{
i128 mx = Y[K];
i128 mn = Y[K];
int l = K;
int r = K;
while (true) {
if (l && Y[l - 1] >= mn) {
l -= 1;
mx = std::max(mx, Y[l]);
} else if (r + 1 < N && Y[r + 1] <= mx) {
r += 1;
mn = std::min(mn, Y[r]);
} else {
break;
}
}
if (l != 0 || r != N - 1) {
return false;
}
}
{
i128 mx = Y[0];
i128 mn = Y[N - 1];
int l = 0;
int r = N - 1;
while (true) {
if (l < K && Y[l + 1] >= mn) {
l += 1;
mx = std::max(mx, Y[l]);
} else if (r > K && Y[r - 1] <= mx) {
r -= 1;
mn = std::min(mn, Y[r]);
} else {
break;
}
}
if (l != K || r != K) {
return false;
}
}
return true;
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin >> N >> K >> T;
--K;
for (int i = 0; i < N; ++i) {
std::cin >> X[i];
}
int lo = 0, hi = int(1E9);
while (lo < hi) {
int mid = (lo + hi) >> 1;
if (check(mid)) {
hi = mid;
} else {
lo = mid + 1;
}
}
std::cout << lo << '\n';
return 0;
}