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