#include<algorithm>
using namespace std;
long long b[1000000],temp;
void ac(long long a[],long long M,long long n){
temp=n;
if(M==0)return;
long long min=1000000001;
for(long long i=1;i<=n;i++)
if(min>b[i])min=b[i];
for(long long k=1;k<=n;k++){
if(min==b[k]){
if(k==1){
b[1]+=b[2];
for(long long i=2;i<=n-1;i++){
b[i]=b[i+1];
}
}
else if(k==n){
b[n-1]+=b[n];}
else{
if(b[k-1]<b[k+1]){
b[k-1]+=b[k];
for(long long z=k;z<=n-1;z++)
b[z]=b[z+1];
}
if(b[k-1]>=b[k+1]){
b[k]+=b[k+1];
for(long long p=k+1;p<=n-1;p++)
b[p]=b[p+1];
}
}
break;
}
}
ac(a,M-1,n-1);
}
int main(){
long long L,N,M,i,k;
scanf("%lld%lld%lld",&L,&N,&M);
long long a[200000]={0};
for(i=1;i<=N;i++){
scanf("%lld",&a[i]);
}
a[N+1]=L;
for(i=1;i<=N+1;i++){
b[i]=a[i]-a[i-1];
}
ac(b,M,N+1);
long long min2=b[1];
for(long long q=2;q<=temp;q++){
if(min2>b[q]){
min2=b[q];
}
}
printf("%lld",min2);
return 0;
}