```go
package main
import (
"bufio"
"os"
"strconv"
"strings"
)
func solve() {
scanner := bufio.NewScanner(os.Stdin)
buf := make([]byte, 0, 64*1024)
scanner.Buffer(buf, 1024*1024)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
scanner.Scan()
t, _ := strconv.Atoi(scanner.Text())
for tc := 0; tc < t; tc++ {
scanner.Scan()
line := strings.Split(scanner.Text(), " ")
n, _ := strconv.Atoi(line[0])
q, _ := strconv.Atoi(line[1])
scanner.Scan()
xStr := strings.Split(scanner.Text(), " ")
x := make([]int64, n)
for i := 0; i < n; i++ {
v, _ := strconv.ParseInt(xStr[i], 10, 64)
x[i] = v
}
scanner.Scan()
qStr := strings.Split(scanner.Text(), " ")
queries := make([]int64, q)
for i := 0; i < q; i++ {
v, _ := strconv.ParseInt(qStr[i], 10, 64)
queries[i] = v
}
cnt := make(map[int64]int64)
for i := 0; i < n; i++ {
c := int64(i+1)*int64(n-i) - 1
cnt[c]++
}
for i := 0; i < n-1; i++ {
gap := x[i+1] - x[i] - 1
if gap > 0 {
c := int64(i+1) * int64(n-i-1)
cnt[c] += gap
}
}
for i := 0; i < q; i++ {
res := cnt[queries[i]]
if i > 0 {
out.WriteByte(' ')
}
out.WriteString(strconv.FormatInt(res, 10))
}
out.WriteByte('\n')
}
}
func main() {
solve()
}
```