```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var q int
fmt.Fscan(in, &q)
for ; q > 0; q-- {
var n int
var k int64
fmt.Fscan(in, &n, &k)
var lo int64 = 1
var hi int64 = 1<<62 - 1
for i := 0; i < n; i++ {
var a int64
fmt.Fscan(in, &a)
l := a - k
if l < 1 {
l = 1
}
r := a + k
if l > lo {
lo = l
}
if r < hi {
hi = r
}
}
if lo > hi {
fmt.Fprintln(out, -1)
} else {
fmt.Fprintln(out, hi)
}
}
}
```