import bisect def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx +=1 M = int(input[idx]) idx +=1 D = [] for _ in range(M): D.append(int(input[idx])) idx +=1 D.sort() p = bisect.bisect_left(D, 0) ln = p rn = M - p min_dist = float('inf') for k in range(0, N+1): m = N - k if k > ln or m > rn: continue if k ==0: # All from right R = D[p + m -1] dist = R elif m ==0: # All from left L = D[p - k] dist = abs(L) else: L = D[p -k] R = D[p + m -1] path1 = abs(L) + (R - L) path2 = R + (R - L) dist = min(path1, path2) if dist < min_dist: min_dist = dist print(min_dist) if __name__ == "__main__": main()