from heapq import heapify, heappush, heappop



k, t = list(map(int, input().split()))

*a, = (-int(x) for x in input().split())



heapify(a)



eaten = 0

while a:

    to_eat = heappop(a)

    to_eat += 1

    if eaten:

        heappush(a, eaten)

        eaten = 0

    if to_eat == 0:

        continue

    elif to_eat < 0:

        eaten = to_eat



print((-eaten))

# 解説を見た



k, t = list(map(int, input().split()))

*a, = (int(x) for x in input().split())



ma = max(a)

rest = k - ma

print((max(0, ma - rest - 1)))



# 最大の個数のケーキを並べる

# 間にほかのケーキを挟んでいく

# aaaaaa bbbb ccc d

# a[bc]a[bc]a[bc]a[b]a[d]a

# 間に1個ずつ入れたときの、aが連続する回数-1が答え

# 間に複数入ることはあるが、同じケーキが入ることはない（最大のケーキの間の数は、ほかのどのケーキの個数よりも多いから）

from heapq import heapify, heappush, heappop

k, t = list(map(int, input().split()))
(*a,) = (-int(x) for x in input().split())
heapify(a)
eaten = 0
while a:
    to_eat = heappop(a)
    to_eat += 1
    if eaten:
        heappush(a, eaten)
        eaten = 0
    if to_eat == 0:
        continue
    elif to_eat < 0:
        eaten = to_eat
print((-eaten))

# 解説を見た
k, t = list(map(int, input().split()))
(*a,) = (int(x) for x in input().split())
ma = max(a)
rest = k - ma
print((max(0, ma - rest - 1)))
# 最大の個数のケーキを並べる
# 間にほかのケーキを挟んでいく
# aaaaaa bbbb ccc d
# a[bc]a[bc]a[bc]a[b]a[d]a
# 間に1個ずつ入れたときの、aが連続する回数-1が答え
# 間に複数入ることはあるが、同じケーキが入ることはない（最大のケーキの間の数は、ほかのどのケーキの個数よりも多いから）

-from heapq import heapify, heappush, heappop - +# 解説を見た -(*a,) = (-int(x) for x in input().split()) -heapify(a) -eaten = 0 -while a: -    to_eat = heappop(a) -    to_eat += 1 -    if eaten: -        heappush(a, eaten) -        eaten = 0 -    if to_eat == 0: -        continue -    elif to_eat < 0: -        eaten = to_eat -print((-eaten)) +(*a,) = (int(x) for x in input().split()) +ma = max(a) +rest = k - ma +print((max(0, ma - rest - 1))) +# 最大の個数のケーキを並べる +# 間にほかのケーキを挟んでいく +# aaaaaa bbbb ccc d +# a[bc]a[bc]a[bc]a[b]a[d]a +# 間に1個ずつ入れたときの、aが連続する回数-1が答え +# 間に複数入ることはあるが、同じケーキが入ることはない（最大のケーキの間の数は、ほかのどのケーキの個数よりも多いから）