#include <bits/stdc++.h>
using namespace std;
int main() {
long long L, N, M;
cin >> L >> N >> M;
vector<long long> rocks(N + 2);
vector<long long> distances(N + 1);
rocks[0] = 0;
rocks[N + 1] = L;
for (int i = 1; i <= N; i++) {
cin >> rocks[i];
}
for (int i = 1; i <= N + 1; i++) {
distances[i] = rocks[i] - rocks[i - 1];
}
long long left = 0, right = L, result = 0;
while (left <= right) {
long long mid = (left + right) / 2;
long long count = 0;
for (int i = 1; i <= N + 1; i++) {
count += (distances[i] - 1) / mid;
}
if (count <= M) {
result = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
cout << result << endl;
return 0;
}