package main
import (
"io"
"os"
"strconv"
)
type FastScanner struct {
data []byte
idx int
}
func (fs *FastScanner) NextInt() int {
n := len(fs.data)
for fs.idx < n && (fs.data[fs.idx] < '0' || fs.data[fs.idx] > '9') {
fs.idx++
}
val := 0
for fs.idx < n && fs.data[fs.idx] >= '0' && fs.data[fs.idx] <= '9' {
val = val*10 + int(fs.data[fs.idx]-'0')
fs.idx++
}
return val
}
func main() {
data, _ := io.ReadAll(os.Stdin)
fs := FastScanner{data: data}
t := fs.NextInt()
out := make([]byte, 0, t*24)
maxInt := int(^uint(0) >> 1)
minInt := -maxInt - 1
for ; t > 0; t-- {
n := fs.NextInt()
a := make([]int, n)
for i := 0; i < n; i++ {
a[i] = fs.NextInt()
}
ans := int64(n) * int64(n+1) * int64(n-1) / 6
var good int64
rights := make([]int, n)
for m := 0; m+1 < n; m++ {
sz := 0
curMin := maxInt
for r := m + 1; r < n; r++ {
if a[r] < curMin {
curMin = a[r]
}
rights[sz] = curMin
sz++
}
p := sz - 1
curMax := minInt
for l := m; l >= 0; l-- {
if a[l] > curMax {
curMax = a[l]
}
for p >= 0 && rights[p] <= curMax {
p--
}
good += int64(p + 1)
}
}
ans -= good
out = strconv.AppendInt(out, ans, 10)
out = append(out, '\n')
}
os.Stdout.Write(out)
}