def check(x):
temp = sum = x
if k > 0:
for i in range(k - 1, -1, -1):
temp = max(1, temp - min(c[i], c[i + 1]))
sum += temp
if sum > m:
return False
temp = x
if k < n - 1:
for i in range(k + 1, n):
temp = max(1, temp - min(c[i - 1], c[i]))
sum += temp
if sum > m:
return False
return True
n, m, k = map(int, input().split())
if m < n:
print(-1)
exit()
c = list(map(int, input().split()))
left, right = 1, m - (n - 1)
k -= 1
while left <= right:
mid = (left + right) // 2
if check(mid):
left = mid + 1
else:
right = mid - 1
print(right)