```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
var t int
fmt.Fscan(in, &t)
for ; t > 0; t-- {
var n int
fmt.Fscan(in, &n)
a := make([]int64, n+2)
for i := 1; i <= n; i++ {
fmt.Fscan(in, &a[i])
}
pos_prefix := make([]int64, n+2)
for i := 1; i <= n; i++ {
var val int64 = 0
if a[i] > 0 {
val = a[i]
} else {
val = -a[i]
}
pos_prefix[i] = pos_prefix[i-1]
if a[i] > 0 {
pos_prefix[i] += val
}
}
neg_suffix := make([]int64, n+2)
neg_suffix[n+1] = 0
for i := n; i >= 1; i-- {
var val int64 = 0
if a[i] > 0 {
val = a[i]
} else {
val = -a[i]
}
neg_suffix[i] = neg_suffix[i+1]
if a[i] < 0 {
neg_suffix[i] += val
}
}
ans := neg_suffix[1]
for j := 1; j <= n; j++ {
if a[j] > 0 {
temp := pos_prefix[j] + neg_suffix[j+1]
if temp > ans {
ans = temp
}
}
}
fmt.Println(ans)
}
}
```