Max circular sum

what is wrong in the logic?
#include<bits/stdc++.h>
#define ll long long
int kadane(int arr[],int n);
//int kadaneforcircular(int arr[],int n);
using namespace std;
int main()
{
int t;
cin>>t;
while(t–)
{
int n;
cin>>n;
int arr[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
int maxsum=kadane(arr,n);
int sum=accumulate(arr,arr+n,0);
//converting array into negative
for(int i=0;i<n;i++)
{
arr[i]=arr[i]*-1;
}
int maxsum1=kadane(arr,n);
maxsum1=sum+maxsum1;
cout<<max(maxsum,maxsum1);
return 0;
}
}
int kadane(int arr[],int n)
{
int maxsum=INT_MIN;
int currsum=0;
for(int i=0;i<n;i++)
{
currsum=currsum+arr[i];
if(maxsum<currsum)
{
maxsum=currsum;
}
if(currsum<0)
{
currsum=0;
}
}
return maxsum;
}