#include <bits/stdc++.h>
using namespace std;
const int N=2e3+5;
const int inf=1e9+7;
int dp[N][N];
int a[N];
int l[N],l1[N];
int n,p,q;
int f(int w){
for(int i=1;i<=n;i++){
int t=lower_bound(a+1,a+1+n,a[i]-w+1)-a;
int t1=lower_bound(a+1,a+1+n,a[i]-2*w+1)-a;
l[i]=t;
l1[i]=t1;
}
for(int i=0;i<=n;i++){
for(int j=0;j<=n;j++){
dp[i][j]=inf;
}
}
for(int j=0;j<=n;j++){
dp[0][j]=0;
}
for(int i=1;i<=n;i++){
for(int j=0;j<=min(n,p);j++){
dp[i][j]=min(dp[i][j],dp[l1[i]-1][j]+1);
if(j>0){
dp[i][j]=min(dp[i][j],dp[l[i]-1][j-1]);
}
}
}
for(int j=0;j<=p;j++){
if(dp[n][j]<=q){
return 1;
}
}
return 0;
}
int f1(){
int l=1,r=inf;
int tong=inf;
while(l<=r){
int m=(l+r)/2;
int s1=f(m);
if(s1==1){
r=m-1;
tong=min(tong,m);
}
else{
l=m+1;
}
}
return tong;
}
int main()
{
cin >>n >>p >>q;
for(int i=1;i<=n;i++){
cin >> a[i];
}
sort(a+1,a+1+n);
int s2=f1();
cout << s2;
return 0;
}