#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1e5+5;
int L,n,k;
int a[N];
int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')
x=x*10+ch-'0',ch=getchar();
return x*f;
}
bool check(int dis){
int num=0;
for(int i=2;i<=n;++i){
if( (a[i]-a[i-1]) <= dis)continue;
if((a[i]-a[i-1])/dis*dis==(a[i]-a[i-1]))
num+=((a[i]-a[i-1])/dis+1);
else
num+=(a[i]-a[i-1])/dis;
if(num>k)return 0;
}
return 1;
}
int main(){
L=read(),n=read(),k=read();
for(int i=1;i<=n;++i)
a[i]=read();
sort(a+1,a+1+n);
int l=1,r=2*L;
int mid;
while(l<r){
mid=(l+r)/2;
if(check(mid))
r=mid;
else
l=mid+1;
}
printf("%d\n",(l+r)/2);
return 0;
}