package main
import (
"bufio"
"fmt"
"os"
)
func max(a, b int64) int64 {
if a > b {
return a
}
return b
}
func min(a, b int64) int64 {
if a < b {
return a
}
return b
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var t int
if _, err := fmt.Fscan(in, &t); err != nil {
return
}
for ; t > 0; t-- {
var a, b, c, r int64
fmt.Fscan(in, &a, &b, &c, &r)
l := min(a, b)
rr := max(a, b)
cl := c - r
cr := c + r
il := max(l, cl)
ir := min(rr, cr)
overlap := ir - il
if overlap < 0 {
overlap = 0
}
ans := (rr - l) - overlap
if ans < 0 {
ans = 0
}
fmt.Fprintln(out, ans)
}
}