# スペース区切りの文字列の入力

K, N = (int(x) for x in input().split())

A = [int(x) for x in input().split()]



ans = 0

max = 0



for i in range(N):

  if(i == N - 1):

    A2 = K + A[0]

  else:

    A2 = A[i+1]

    

  # 距離が最大のもの以外をansに加算

  if(max < abs(A2 - A[i])):

      ans += max

      max = abs(A2 - A[i])

  else:

    ans += abs(A2 - A[i])



print(ans)

# スペース区切りの文字列の入力

K, N = (int(x) for x in input().split())

A = [int(x) for x in input().split()]



# 最も離れた場所を求める(通常)

max_val = 0

for i in range(N-1):

  max_val = max(max_val, A[i+1] - A[i])

# 最も離れた場所を求める(先頭と終端)

max_val = max(max_val, K - A[N-1] + A[0])



print((K-max_val))
# スペース区切りの文字列の入力
K, N = (int(x) for x in input().split())
A = [int(x) for x in input().split()]
ans = 0
max = 0
for i in range(N):
    if i == N - 1:
        A2 = K + A[0]
    else:
        A2 = A[i + 1]
    # 距離が最大のもの以外をansに加算
    if max < abs(A2 - A[i]):
        ans += max
        max = abs(A2 - A[i])
    else:
        ans += abs(A2 - A[i])
print(ans)

# スペース区切りの文字列の入力
K, N = (int(x) for x in input().split())
A = [int(x) for x in input().split()]
# 最も離れた場所を求める(通常)
max_val = 0
for i in range(N - 1):
    max_val = max(max_val, A[i + 1] - A[i])
# 最も離れた場所を求める(先頭と終端)
max_val = max(max_val, K - A[N - 1] + A[0])
print((K - max_val))

-ans = 0 -max = 0 -for i in range(N): -    if i == N - 1: -        A2 = K + A[0] -    else: -        A2 = A[i + 1] -    # 距離が最大のもの以外をansに加算 -    if max < abs(A2 - A[i]): -        ans += max -        max = abs(A2 - A[i]) -    else: -        ans += abs(A2 - A[i]) -print(ans) +# 最も離れた場所を求める(通常) +max_val = 0 +for i in range(N - 1): +    max_val = max(max_val, A[i + 1] - A[i]) +# 最も離れた場所を求める(先頭と終端) +max_val = max(max_val, K - A[N - 1] + A[0]) +print((K - max_val))