def rob_circle(nums):
    if not nums:
        return 0
    if len(nums) == 1:
        return nums[0]
    def linear(left, right):
        previous = current = 0
        for i in range(left, right):
            previous, current = current, max(current, previous + nums[i])
        return current
    return max(linear(0, len(nums) - 1), linear(1, len(nums)))
