n, m = map(int, input().split()) a = list(map(int, input().split())) a.sort(reverse=True) ans = 0 for k in range(0, n//2 + 1): if 2 * k > n: continue if k == 0: ans = max(ans, 0) continue # Select the largest k and smallest k elements a_part = a[:k] b_part = sorted(a[n - k:], reverse=True) # Merge the two sorted arrays in descending order merged = [] i = j = 0 while i < k and j < k: if a_part[i] >= b_part[j]: merged.append(a_part[i]) i += 1 else: merged.append(b_part[j]) j += 1 merged.extend(a_part[i:]) merged.extend(b_part[j:]) # Calculate O and the difference sum diff_sum = 0 o_sum = 0 for i in range(k): o = merged[2 * i] e = merged[2 * i + 1] o_sum += o diff_sum += o - e if diff_sum <= m: ans = max(ans, o_sum) print(ans)