#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string>
#include <cstring>
int L,N,M;
int Di[50005];
int work(int left,int right){
if(right - left <= 1) return left;
int mid = left+(right-left)/2;
int last=0;
int remove=0;
bool flag=false;
for(int i=1;i<=N;i++){
if(Di[i]-last<mid){
remove++;
if(remove>M){
flag=true;
break;
}
}
else{
last=Di[i];
}
}
if(flag){
return work(left,mid);
}
else{
return work(mid,right);
}
}
int main(){
scanf("%d %d %d",&L,&N,&M);
for(int i = 1;i <= N;i++) scanf("%d",&Di[i]);
Di[N+1] = L;
printf("%d",work(1,L+1));
return 0;
}