debuging
#include<iostream>
using namespace std;
int check(int* a, int mid, int l, int n, int m) {
int count(0);
int i(1), now(0);
if (a[0] < mid) {
count++;
i++;
}
while (i <= n) {
if (a[i] - a[now] < mid) {
count++;
i++;
}
else
{
now = i;
i++;
}
}
if (count <= m) {
return 1;
}
else {
return 0;
}
}
int b_search(int* a, int lft, int rgt, int l, int n, int m) {
if (lft < rgt) {
if(lft+1==rgt){
return lft;
}
int mid = (lft + rgt) >> 1;
if (check(a, mid, l, n, m) == 1) {
b_search(a, mid , rgt, l, n, m);
}
else {
b_search(a, lft, mid , l, n, m);
}
}
else {
return rgt;
}
}
int main() {
int l, n, m;
cin >> l >> n >> m;
int* a = new int[n + 1];
int i(0);
while (i < n) {
cin >> a[i];
i++;
}
a[n] = l;
cout << b_search(a, 0, l - 1, l, n, m);
return 0;
}