def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 X = int(input[idx]) idx += 1 Y = int(input[idx]) idx += 1 a = list(map(int, input[idx:idx + N])) idx += N S = sum(a) x_gain = [X - num for num in a] y_gain = [Y - num for num in a] # Compute left_max using Kadane's algorithm left_max = [0] * (N + 2) # 1-based indexing, up to N current_max = 0 max_so_far = -float('inf') for i in range(1, N + 1): current_max = max(x_gain[i - 1], current_max + x_gain[i - 1]) if current_max > max_so_far: max_so_far = current_max left_max[i] = max_so_far # Compute right_max using Kadane's algorithm from right right_max = [0] * (N + 2) current_max = 0 max_so_far = -float('inf') for i in range(N, 0, -1): current_max = max(y_gain[i - 1], current_max + y_gain[i - 1]) if current_max > max_so_far: max_so_far = current_max right_max[i] = max_so_far # For each M from 2 to N-1 (M is from 2 to N-1) # M starts from 2, and in the problem, outputs M = i+1 (for i from 1 to N-2) results = [] for M in range(2, N): left_part = M - 1 right_part = M + 1 if left_part < 1: gain_left = 0 else: gain_left = left_max[left_part] if right_part > N: gain_right = 0 else: gain_right = right_max[right_part] total = S + gain_left + gain_right results.append(total) print('\n'.join(map(str, results))) if __name__ == '__main__': main()