#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int l, n, k;
struct la
{
int length;
int ju;
}lam[100010];
vector<int>lamp;
bool cmp(la a, la b)
{
return a.ju > b.ju;
}
int main()
{
freopen("title.in", "r", stdin);
cin >> l >> n >> k;
cin >> lam[0].length;
lam[0].ju = lam[0].length;
for (int i = 1; i < n; i++)
{
cin >> lam[i].length;
lam[i].ju = lam[i].length - lam[i-1].length;
}
sort(lam, lam + n, cmp);
for (int i = 0; i < n; i++)
lamp.push_back(lam[i].ju);
while (k)
{
int temp0=lamp.front() - lamp.front()/2;
int temp1 = lamp.front()/2;
lamp.erase(lamp.begin());
int g = 0;
for (int i = 0; i < lamp.size(); i++)
{
if (temp0 >=lamp[i])
{
lamp.insert(lamp.begin()+i, temp0);
g = 1;
break;
}
}
if (g == 0)
lamp.push_back(temp0);
g = 0;
for (int i = 0; i < lamp.size(); i++)
{
if (temp1 >=lamp[i])
{
lamp.insert(lamp.begin() + i, temp1);
g = 1;
break;
}
}
if (g == 0)
lamp.push_back(temp1);
k--;
}
cout << lamp.front();
return 0;
}