#include<bits/stdc++.h>
using namespace std;
struct node{
int lth,num,lst;
friend bool operator < (node a,node b){
return a.lst<b.lst;
}
}z,z1;
priority_queue<node> q;
int l,n,k,ans,a[100005];
int main(){
scanf("%d%d%d",&l,&n,&k);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=2;i<=n;i++){
z.lst=a[i]-a[i-1];
z.lth=a[i]-a[i-1];
z.num=1;
q.push(z);
}
for(int i=1;i<=k;i++){
z1=q.top();
q.pop();
int aa=z1.lst;
int bb=z1.lth;
int cc=z1.num;
cc++;
aa=(bb+cc-1)/cc;
z.lst=aa;
z.lth=bb;
z.num=cc;
q.push(z);
}
z1=q.top();
cout<<z1.lst;
return 0;
}