#include <iostream>
using namespace std;
int l, n, m;
int stone[500000];
int check(int mid);
int main()
{
cin >> l >> n >> m;
for (int i = 1; i <= n; i++) cin >> stone[i];
int left = 0, right = l, mid;
while (left+1<right)
{
mid = (left + right) / 2;
if (check(mid) <= m) left = mid;
else right = mid;
}
cout << left;
return 0;
}
int check(int mid)
{
int ans = 0, list = 0;
for (int i = 1; i <= n; i++)
{
if (stone[i] - stone[list] < mid) ans++;
else list = i;
}
if (l - stone[list] < mid) return m+1;
return ans;
}