#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(int* a, int ans, int n, int m)//
{
int i, j=0, k=0;//k为最后一个没有被丢弃的石头
for(i=1;i<=n+1;i++)
{
if(a[i]-a[k]<ans)//需要丢弃的石头
{
j++;
}
else
k=i;
}
if(j<=m)//答案可以满足 向更大处搜索
return 1;
//答案无法满足 向小处搜索
return 0;
}
int main()
{
int l, n, m, ans;
scanf("%d%d%d", &l, &n, &m);
int distance[n+2];
int i;
for(i=1;i<=n;i++)
scanf("%d", &distance[i]);
distance[i+1]=l;
distance[0]=0;
int j=1, mid;
i=l;
while(i>=j)
{
mid=(i+j)/2;
/*printf("%d ", mid);*/
if(compare(distance, mid, n, m))
{
ans=mid;
j=mid+1;
}
else
i=mid-1;
}
printf("%d", ans);
return 0;
}