#include<iostream>
#include<vector>
#include<string>
#include<map>
#include<algorithm>
#include<set>
#include<cmath>
#include<cctype>
#include<cstring>
using namespace std;
#define ll long long
const int max_num=1e7+10;
int main(){
ll L,N,M;
cin>>L>>N>>M;
vector<ll> distance;
ll temp1=0,temp2;;
for(ll i=0;i<N;i++){
cin>>temp2;
distance.push_back(temp2-temp1);
temp1=temp2;
}
distance.push_back(L-temp1);
/*
每次循环把最短的距离合并到旁边的距离中
*/
for(ll i=0;i<M;i++){
ll min=max_num;
auto temp=distance.begin();
for(auto it=distance.begin();it!=distance.end();it++){
if(*it<min){
min=*it;
temp=it;
}
}
if((*(temp+1)<=*(temp-1)&&temp+1!=distance.end())||temp==distance.begin()){
*(temp+1)+=min;
}
if((*(temp+1)>*(temp-1)&&temp!=distance.begin())||temp+1==distance.end()){
*(temp-1)+=min;
}
distance.erase(temp);
}
/*
找到当前最短的距离
*/
ll min=max_num;
auto temp=distance.begin();
for(auto it=distance.begin();it!=distance.end();it++){
if(*it<min){
min=*it;
temp=it;
}
}
cout<<min;
return 0;
}