#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=50010;
int L,N,M;
int d[maxn];
void beg(){
freopen("2015stone.in","r",stdin);
freopen("2015stone.out","w",stdout);
}
bool check(int x){
int cnt=0;
int pos=0;
while (pos<=N+1){
int left=pos;pos++;
while (d[pos]-d[left]<=x&&pos<=N+1) cnt++,pos++;
}
// printf("%d %d\n",cnt,x);
return cnt<=M;
}
int main(){
beg();
scanf("%d%d%d",&L,&N,&M);
for (int i=1;i<=N;i++){
scanf("%d",&d[i]);
}
d[0]=0,d[N+1]=L;
int l=0,r=L;
while(l<=r){
int mid=(l+r)>>1;
if (check(mid)) l=mid+1;
else r=mid-1;
}
printf("%d",l);
}