def maxSubarraySumCircular(nums): if not nums: return 0 # 初始化变量 total_sum = 0 max_sum = float("-inf") min_sum = float("inf") current_max = 0 current_min = 0 for num in nums: # 计算数组的总和 total_sum += num # 计算最大子数组和 current_max = max(num, current_max + num) max_sum = max(max_sum, current_max) # 计算最小子数组和 current_min = min(num, current_min + num) min_sum = min(min_sum, current_min) # 情况1:最大子数组和不跨越环形边界 case1 = max_sum # 情况2:最大子数组和跨越环形边界 case2 = total_sum - min_sum if total_sum != min_sum else max_sum # 返回两种情况的最大值 return max(case1, case2) # 输入处理 n = int(input()) nums = list(map(int, input().split())) # 输出结果 print(maxSubarraySumCircular(nums))