def rob(nums):
    if not nums:
        return 0
    if len(nums) == 1:
        return nums[0]

    # 情况1:偷第一个房间,不偷最后一个房间
    dp1 = [0] * len(nums)
    dp1[0] = nums[0]
    dp1[1] = max(nums[0], nums[1])
    for i in range(2, len(nums) - 1):
        dp1[i] = max(dp1[i - 1], dp1[i - 2] + nums[i])

    # 情况2:不偷第一个房间,偷最后一个房间
    dp2 = [0] * len(nums)
    dp2[0] = 0
    dp2[1] = nums[1]
    for i in range(2, len(nums)):
        dp2[i] = max(dp2[i - 1], dp2[i - 2] + nums[i])

    # 返回两种情况的最大值
    return max(dp1[-2], dp2[-1])


# 输入处理
n = int(input())
nums = list(map(int, input().split()))
# 输出结果
print(rob(nums))