code:
#include<bits/stdc++.h>
using namespace std;
int x,n,m;
int rock[50001];
bool check(int len)
{
int mv=m;
for (int i=1;i<=n;++i)
{
int k=1;
while (rock[i+k]-rock[i]<len&&i+k<=n+1)
{
--mv;
++k;
if (mv<0) return false;
}
}
if (mv<0) return false;
else return true;
}
int main()
{
cin>>x>>n>>m;
for (int i=1;i<=n;++i) cin>>rock[i];
rock[n+1]=x;
int l=1,r=x;
int ans;
while (l<=r)
{
int mid=(l+r)/2;
if (check(mid))
{
ans=mid;
l=mid+1;
}
else
{
r=mid-1;
}
}
cout<<ans;
return 0;
}