#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 1e5;
int l, n, m;
int sign[N];
bool check(int x) {
int now = 0; int i = 1;
int cnt = 0;
while (1) {
if (i >= n)break;
if (sign[i] - sign[now] < x) {
return false;
}
else {
if ((sign[i] - sign[now] + 1) / 2 > x) {
cnt++; now = i; i++;
}
else {
return false;
}
}
}
if (cnt >= m)return true;
else return false;
}
int main() {
cin >> l >> n >> m;
for (int i = 0; i < n; i++) {
cin >> sign[i];
}
int r = l + 1; int l = -1;
while (l + 1 != r) {
int mid = (l + r) / 2;
if (check(mid))l = mid;
else r = mid;
}
cout << r<< endl;
return 0;
}