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)