#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, p, q;
vector<int> a;
const int maxn = 2005;
int l1[maxn];
int l2[maxn];
int dp[maxn][maxn];
bool ok(int x) {
for (int i = 0; i < n; i++) {
l1[i] = upper_bound(a.begin(), a.end(), a[i] - x) - a.begin();
l2[i] = upper_bound(a.begin(), a.end(), a[i] - 2 * x) - a.begin();
}
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= p; j++) {
dp[i][j] = 1e18;
}
}
dp[0][0] = 0;
for (int i = 1; i <= n; i++) {
dp[i][0] = dp[l2[i - 1]][0] + 1;
for (int j = 1; j <= p; j++) {
dp[i][j] = min({dp[i][j - 1], dp[l1[i - 1]][j - 1], dp[l2[i - 1]][j] + 1});
}
}
return dp[n][p] <= q;
}
signed main(){
cin >> n >> p >> q;
a.resize(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a.begin(), a.end());
int l = 0, r = 1e10;
while (l + 1 < r) {
int mid = (l + r)/2;
if(ok(mid)) {
r = mid;
}
else {
l = mid;
}
}
cout << r;
return 0;
}