#include <bits/stdc++.h>
using namespace std;
int l, n, Q, x, mid, a[100001];
priority_queue <int, vector<int>, less<int> > q;
int main()
{
scanf("%d%d%d", &l, &n, &Q);
for (int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
q.push(a[i] - a[i - 1]);//将每个点和它之前那个的点的距离存入优先队列
}
q.push(l - a[n]);//特别存入尾端点
for (int i = 1; i <= Q; i++)
{
x = q.top();//每次去出队首
q.pop();
//将最长的那段分为两段
q.push(x / 2);
q.push(x - x / 2);
}
printf("%d\n", q.top());
return 0;
}```