package main
import (
"bufio"
"fmt"
"os"
)
func abs64(x int64) int64 {
if x < 0 {
return -x
}
return x
}
func simulate(N int, A []int, sideA, sideB int) int64 {
l, r := 0, N-1
var sumA, sumB int64
turnA := true
for l <= r {
if turnA {
if sideA == 0 {
sumA += int64(A[l])
l++
} else {
sumA += int64(A[r])
r--
}
} else {
if sideB == 0 {
sumB += int64(A[l])
l++
} else {
sumB += int64(A[r])
r--
}
}
turnA = !turnA
}
if sumA > sumB {
return sumA - sumB
}
return sumB - sumA
}
func solve(N int, A []int) int64 {
best := int64(-1)
for sideA := 0; sideA <= 1; sideA++ {
for sideB := 0; sideB <= 1; sideB++ {
diff := simulate(N, A, sideA, sideB)
if best == -1 || diff < best {
best = diff
}
}
}
return best
}
func main() {
in := bufio.NewReader(os.Stdin)
var T int
if _, err := fmt.Fscan(in, &T); err != nil {
// if no T present, try to read single test case style:
return
}
for ; T > 0; T-- {
var N int
fmt.Fscan(in, &N)
A := make([]int, N)
for i := 0; i < N; i++ {
fmt.Fscan(in, &A[i])
}
fmt.Println(solve(N, A))
}
}
cGFja2FnZSBtYWluCgppbXBvcnQgKAoJImJ1ZmlvIgoJImZtdCIKCSJvcyIKKQoKZnVuYyBhYnM2NCh4IGludDY0KSBpbnQ2NCB7CglpZiB4IDwgMCB7CgkJcmV0dXJuIC14Cgl9CglyZXR1cm4geAp9CgpmdW5jIHNpbXVsYXRlKE4gaW50LCBBIFtdaW50LCBzaWRlQSwgc2lkZUIgaW50KSBpbnQ2NCB7CglsLCByIDo9IDAsIE4tMQoJdmFyIHN1bUEsIHN1bUIgaW50NjQKCXR1cm5BIDo9IHRydWUKCWZvciBsIDw9IHIgewoJCWlmIHR1cm5BIHsKCQkJaWYgc2lkZUEgPT0gMCB7CgkJCQlzdW1BICs9IGludDY0KEFbbF0pCgkJCQlsKysKCQkJfSBlbHNlIHsKCQkJCXN1bUEgKz0gaW50NjQoQVtyXSkKCQkJCXItLQoJCQl9CgkJfSBlbHNlIHsKCQkJaWYgc2lkZUIgPT0gMCB7CgkJCQlzdW1CICs9IGludDY0KEFbbF0pCgkJCQlsKysKCQkJfSBlbHNlIHsKCQkJCXN1bUIgKz0gaW50NjQoQVtyXSkKCQkJCXItLQoJCQl9CgkJfQoJCXR1cm5BID0gIXR1cm5BCgl9CglpZiBzdW1BID4gc3VtQiB7CgkJcmV0dXJuIHN1bUEgLSBzdW1CCgl9CglyZXR1cm4gc3VtQiAtIHN1bUEKfQoKZnVuYyBzb2x2ZShOIGludCwgQSBbXWludCkgaW50NjQgewoJYmVzdCA6PSBpbnQ2NCgtMSkKCWZvciBzaWRlQSA6PSAwOyBzaWRlQSA8PSAxOyBzaWRlQSsrIHsKCQlmb3Igc2lkZUIgOj0gMDsgc2lkZUIgPD0gMTsgc2lkZUIrKyB7CgkJCWRpZmYgOj0gc2ltdWxhdGUoTiwgQSwgc2lkZUEsIHNpZGVCKQoJCQlpZiBiZXN0ID09IC0xIHx8IGRpZmYgPCBiZXN0IHsKCQkJCWJlc3QgPSBkaWZmCgkJCX0KCQl9Cgl9CglyZXR1cm4gYmVzdAp9CgpmdW5jIG1haW4oKSB7CglpbiA6PSBidWZpby5OZXdSZWFkZXIob3MuU3RkaW4pCgl2YXIgVCBpbnQKCWlmIF8sIGVyciA6PSBmbXQuRnNjYW4oaW4sICZUKTsgZXJyICE9IG5pbCB7CgkJLy8gaWYgbm8gVCBwcmVzZW50LCB0cnkgdG8gcmVhZCBzaW5nbGUgdGVzdCBjYXNlIHN0eWxlOgoJCXJldHVybgoJfQoJZm9yIDsgVCA+IDA7IFQtLSB7CgkJdmFyIE4gaW50CgkJZm10LkZzY2FuKGluLCAmTikKCQlBIDo9IG1ha2UoW11pbnQsIE4pCgkJZm9yIGkgOj0gMDsgaSA8IE47IGkrKyB7CgkJCWZtdC5Gc2NhbihpbiwgJkFbaV0pCgkJfQoJCWZtdC5QcmludGxuKHNvbHZlKE4sIEEpKQoJfQp9Cg==