← Home
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

type uint32Slice []uint32

func (x uint32Slice) Len() int           { return len(x) }
func (x uint32Slice) Less(i, j int) bool { return x[i] < x[j] }
func (x uint32Slice) Swap(i, j int)      { x[i], x[j] = x[j], x[i] }

func main() {
	reader := bufio.NewReader(os.Stdin)
	var t int
	if _, err := fmt.Fscan(reader, &t); err != nil {
		return
	}

	sums := make(uint32Slice, 0, 2005*2005/2)
	p := make([]int, 2005)

	for tc := 0; tc < t; tc++ {
		var n int
		fmt.Fscan(reader, &n)

		p[0] = 0
		for i := 1; i <= n; i++ {
			var a int
			fmt.Fscan(reader, &a)
			p[i] = p[i-1] + a
		}

		sums = sums[:0]
		for i := 0; i <= n; i++ {
			for j := i; j <= n; j++ {
				s := uint32(p[i] + p[j])
				val := s << 1
				if i == j {
					val |= 1
				}
				sums = append(sums, val)
			}
		}

		sort.Sort(sums)

		var m int64 = 0
		length := len(sums)
		for i := 0; i < length; {
			j := i
			target := sums[i] >> 1
			var k int64 = 0
			var c int64 = 0
			for j < length && (sums[j]>>1) == target {
				if (sums[j] & 1) == 0 {
					k++
				} else {
					c++
				}
				j++
			}
			m += k*(k-1) + k*c
			i = j
		}

		ans := int64(n-1) * int64(n) * int64(n+1) / 6
		ans -= m

		fmt.Println(ans)
	}
}