#include <bits/stdc++.h>
using i64 = long long;
#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];
i64 Y[max_N];
bool check(int s) {
for (int i = 0; i < N; ++i) {
Y[i] = X[i] - 2LL * i * T * s;
}
i64 mx = Y[K];
i64 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;
}
}
return l == 0 && r == N - 1;
}
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;
}