#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
ll t,a,b,c,d,e,f,g;
cin>>a>>b>>c;
vector<ll>vk(a);
for(int i = 0;i<a;i++){
cin>>vk[i];
}
sort(vk.begin(),vk.end());
b = min(a,b);
ll l = 1;
ll r = 1e9;
ll ans = 1e9;
while(l<=r){
ll mid = (l+r)/2;
vector<ll>nxt1(a);
vector<ll>nxt2(a);
for(int i = 0;i<a;i++){
nxt1[i] = lower_bound(vk.begin(),vk.end(),vk[i]+mid)-vk.begin();
nxt2[i] = lower_bound(vk.begin(),vk.end(),vk[i]+2*mid)-vk.begin();
}
vector<vector<ll>>dp(a+1,vector<ll>(b+1,1e18));
dp[0][0] = 0;
for(int i = 0;i<a;i++){
for(int j = 0;j<=b;j++){
if(dp[i][j] > c){
continue;
}
if(j+1 <= b){
if(dp[nxt1[i]][j+1] > dp[i][j]){
dp[nxt1[i]][j+1] = dp[i][j];
}
}
if(dp[nxt2[i]][j] > dp[i][j]+1){
dp[nxt2[i]][j] = dp[i][j]+1;
}
}
}
ll ok = 0;
for(int i = 0;i<=b;i++){
if(dp[a][i] <= c){
ok = 1;
break;
}
}
if(ok){
ans = mid;
r = mid-1;
}
else{
l = mid+1;
}
}
cout<<ans<<endl;
}
//By Rashid_Hashimzade