code
#include<bits/stdc++.h>
using namespace std;
int L,n,m;
int MIN=1000000001,MAX=0;
int a[55000];
bool judge(int mini){
int move=0;
int w=0;
for(int i=1;i<=n+1;i++){
if(a[i]-w<mini){
move++;
}
else{
w=a[i];
}
}
return move<=m;
}
int find(int l,int r){
int mid;
while(l+1<r){
mid=(l+r)>>1;
if(judge(mid)==false) r=mid-1;
else l=mid;
}
return l;
}
int main(){
cin>>L>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
MAX=max(a[i],MAX);
MIN=min(a[i],MIN);
}
a[n+1]=L;
cout<<find(MIN,MAX);
return 0;
}