/**
* Author: johnsondu
* Stratege: DP
* ItemName: StepByStep to learn DP well
* ProblemAndUrl: Maximum sum http://poj.org/problem?id=2479
*
*/
#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std ;
#define MAXN 50005
#define inf 0xfffffff
int a[MAXN] ;
int dp1[MAXN], dp2[MAXN] ; //记录当前的字段和
int r1[MAXN], r2[MAXN] ; //分别表示从0开始和从n-1开始的当前最大字段和
int n ;
inline int Max (int a, int b)
{
return a > b ? a : b ;
}
void DP ()
{
for (int i = 1; i < n; i ++)
{
dp1[i] = Max (dp1[i-1] + a[i], a[i]) ;
r1[i] = Max (r1[i-1], dp1[i]) ;
}
for (int i = n-2; i >= 0; i --)
{
dp2[i] = Max (dp2[i+1] + a[i], a[i]) ;
r2[i] = Max (r2[i+1], dp2[i]) ;
}
}
void print ()
{
int ans = -inf ;
for (int i = 0; i < n-1; i ++)
ans = Max (ans, r1[i] + r2[i+1]) ;
printf ("%d\n", ans) ;
}
int main ()
{
int tcase ;
//freopen ("data.txt", "r", stdin) ;
scanf ("%d", &tcase) ;
while (tcase --)
{
scanf ("%d", &n) ;
for (int i = 0; i < n; i ++)
{
scanf ("%d", &a[i]) ;
dp1[i] = dp2[i] = 0 ;
r1[i] = r2[i] = -inf ;
}
r1[0] = dp1[0] = a[0] ;
r2[n-1] = dp2[n-1] = a[n-1] ;
DP () ;
print() ;
}
return 0 ;
}