#include<iostream>
#include<vector>
using namespace std;
int l, n, m, ans, stone[500005];
int main()
{
vector<int>a;
cin >> l >> n >> m;
stone[0] = 0, stone[n + 1] = l;
for (int i = 1; i <= n; i++)
cin >> stone[i];
for (int i = 1; i <= n + 1; i++)
a.push_back(stone[i] - stone[i - 1]);
while (m--)
{
auto min_position = min_element(a.begin(), a.end()) - a.begin();
if (min_position == 0)
{
a[min_position + 1] += a[min_position];
for (auto iter = a.begin(); iter != a.end(); iter++)
{
if (*iter == a[min_position])
{
a.erase(iter);
break;
}
}
}
else if (a[min_position - 1] <= a[min_position + 1])
{
a[min_position - 1] += a[min_position];
for (auto iter = a.begin(); iter != a.end(); iter++)
{
if (*iter == a[min_position])
{
a.erase(iter);
break;
}
}
}
else if (a[min_position - 1] > a[min_position + 1])
{
a[min_position + 1] += a[min_position];
for (auto iter = a.begin(); iter != a.end(); iter++)
{
if (*iter == a[min_position])
{
a.erase(iter);
break;
}
}
}
else if (min_position == a.size() - 1)
{
a[min_position - 1] += a[min_position];
for (auto iter = a.begin(); iter != a.end(); iter++)
{
if (*iter == a[min_position])
{
a.erase(iter);
break;
}
}
}
}
auto ans_position = min_element(a.begin(), a.end()) - a.begin();
ans = a[ans_position];
cout << ans;
}