Showing TLE despite of being in O(n)

//SHOWING TLE

#include
#include
#include
#define endl “\n”
#define maximum 1000
using namespace std;

//maximum circular sum

int kadane(int a[], int n) {

int currentSum = 0, maxSum = 0;
for (int i = 0; i < n; i++) {
    currentSum += a[i];
    a[i] = -a[i];
    if (currentSum < 0)
        currentSum = 0;
}
maxSum = max(currentSum, maxSum);

return maxSum;

}

int circularSum(int a[], int n, int wrapSum) {

int max_kadane = kadane(a, n);
wrapSum = wrapSum + kadane(a, n);

return (wrapSum > max_kadane) ? wrapSum : max_kadane;

}

int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);

int tc;
cin >> tc;
while (tc > 0) {
    int n, a[maximum], wrapSum = 0;
    cin >> n;
    for (int i = 0; i < n; i++){
        cin >> a[i];
        wrapSum = wrapSum + a[i];
    }
    cout << circularSum(a, n, wrapSum);
}

return 0;

}