------
## 最终结论
```python
def maxSubarraySumCircular(A):
    def kadane(arr):
        max_sum = current_sum = arr[0]
        for num in arr[1:]:
            current_sum = max(num, current_sum + num)
            max_sum = max(max_sum, current_sum)
        return max_sum

    total_sum = sum(A)
    max_kadane = kadane(A)

    # Invert the array to find the minimum subarray sum
    inverted_A = [-x for x in A]
    min_kadane = kadane(inverted_A)

    # The maximum circular subarray sum is total sum - min subarray sum
    max_circular = total_sum + min_kadane  # min_kadane is negative

    if max_circular == 0:  # Edge case when all numbers are negative
        return max_kadane

    return max(max_kadane, max_circular)

# Example usage:
print(maxSubarraySumCircular([1,-2,3,-2]))  # Output: 3
print(maxSubarraySumCircular([5,-3,5]))     # Output: 10
print(maxSubarraySumCircular([3,-1,2,-1]))  # Output: 4
print(maxSubarraySumCircular([3,-2,2,-3]))  # Output: 3
print(maxSubarraySumCircular([-2,-3,-1]))   # Output: -1
```