#include<bits/stdc++.h>
using namespace std;
long long x;
long long read(){
long long x=0,y=1;
char ch;
ch=getchar();
while(ch<'0'||ch>'9'&&ch!=EOF){
if(ch=='-'){
y=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=x*10+(ch-'0');
ch=getchar();
}
return x*y;
}
void write(long long x){
if(x<0)
putchar('-'),x=-x;
if(x>9)
write(x/10);
putchar(x%10+'0');
return;
}
long long n;
long long m;
long long L;
long long a[1100000];
bool check(long long mid){
long long now=1,x=0;
for(int i=2;i<=n+1&&now<=n;i++){
if(a[i]-a[now]<mid){
x++;
}else{
now=i;
}
if(x>m){
return false;
}
}
return true;
}
signed main(){
L=read(),n=read(),m=read();
for(int i=1;i<=n;i++){
cin>>a[i];
}
a[n+1]=L;
long long l=1;
long long r=L;
long long ans=0x3f3f3f3f3f3f3f;
while(l<=r){
long long mid=l+(r-l)/2;
if(check(mid)){
ans=mid;
l=mid+1;
}else{
r=mid-1;
}
}
cout<<ans;
return 0;
}