#include <bits/stdc++.h>
using namespace std;
const int N=50005;
int a[N];
int l,n,m;
#define LL long long
#define rep0(i,n) for(register int i=0;i<n;i++)
#define rep1(i,n) for(register int i=1;i<=n+1;i++)
#define REP(i,j,n) for(register int i=j;i<n;i++)
#define rep11(i,n) for(register int i=1;i<=n+1;i++)
//int binary_search(int array[], int n, int value)
//{
// int left = 0;
// int right = n - 1;
//
// while (left <= right)
// {
// int mid = (left + right) >> 1;
//
// if (array[mid] < value)
// left = mid + 1;
// else if (array[mid] > value)
// right = mid + 1;
// else
// return mid;
// }
// return -1;
//}
bool check(int x){
int sum=0,p=0;
rep1(i,n){
if(a[i]-p<x)
sum++;
else
p=a[i];
if(sum>m)
return 0;
}
return 1;
}
int main()
{
cin>>l>>m>>n;
rep11(i,n){
cin>>a[i];
a[0]=0;
a[n+1]=l;
}
int L=0,r=l,ans;
while(L<=r){
int mid=L+r>>1;
if(check(mid)){
ans=mid;
l=mid+1;
}
else
r=mid-1;
}
cout<<ans<<endl;
return 0;
}