from bisect import *

N,K = map(int,input().split())
A = list(map(int,input().split()))
m = 2 * N - 1 - A[-1]
for i in range(K):
  A[i] += m

berry = [0] * (4 * N)
R = [0] * (4 * N)
for i in range(K):
  a = A[i]
  berry[a] = 1
  berry[a + 2 * N] = 1
  R[a] = 1
  R[a + 2 * N] = 1
  A.append(a + 2 * N)
for i in range(4 * N - 1):
  R[i + 1] += R[i]

l = 1
r = N + 1
d = [-1 for u in range(2 * N)]
for u in range(2 * N):
  d[u] = A[bisect_left(A,u)]
while r - l > 1:
  m = (l + r) // 2
  dp = [0 for u in range(4 * N)]
  dp[0] = 1
  f = 0
  for u in range(2 * N):
    if berry[u]:
      f = 1
      continue
    if f == 0:
      dp[u] = u + 1
    else:
      if berry[u - 1] == 0:
        dp[u] = max(dp[u],dp[u - 1])
    v = max(u + m,d[u])
    if berry[v]:
      v += 1
    if v % 2:
      v += 1
    if R[v] - R[u] == 1:
      dp[v] = max(dp[v],dp[u])
  f = 0
  for u in range(2 * N):
    if berry[u]:
      break
    if dp[u + 2 * N] >= u + 1:
      f = 1
  if f:
    l = m
  else:
    r = m
print(l)