package main
import (
"bufio"
"os"
"strings"
)
type FastScanner struct {
r *bufio.Reader
}
func NewFastScanner() *FastScanner {
return &FastScanner{r: bufio.NewReaderSize(os.Stdin, 1<<20)}
}
func (fs *FastScanner) NextInt64() int64 {
var sign int64 = 1
var val int64
c, err := fs.r.ReadByte()
for (c < '0' || c > '9') && c != '-' {
c, err = fs.r.ReadByte()
if err != nil {
return 0
}
}
if c == '-' {
sign = -1
c, _ = fs.r.ReadByte()
}
for c >= '0' && c <= '9' {
val = val*10 + int64(c-'0')
c, err = fs.r.ReadByte()
if err != nil {
break
}
}
if err == nil {
_ = fs.r.UnreadByte()
}
return val * sign
}
func main() {
fs := NewFastScanner()
t := int(fs.NextInt64())
var out strings.Builder
for ; t > 0; t-- {
n := int(fs.NextInt64())
l := make([]int64, n)
r := make([]int64, n)
for i := 0; i < n; i++ {
l[i] = fs.NextInt64()
r[i] = fs.NextInt64()
}
check := func(k int64) bool {
lo, hi := int64(0), int64(0)
for i := 0; i < n; i++ {
if lo-k > l[i] {
lo = lo - k
} else {
lo = l[i]
}
if hi+k < r[i] {
hi = hi + k
} else {
hi = r[i]
}
if lo > hi {
return false
}
}
return true
}
var left int64 = -1
var right int64 = 1000000000
for right-left > 1 {
mid := (left + right) / 2
if check(mid) {
right = mid
} else {
left = mid
}
}
out.WriteString(int64ToString(right))
out.WriteByte('\n')
}
w := bufio.NewWriterSize(os.Stdout, 1<<20)
w.WriteString(out.String())
w.Flush()
}
func int64ToString(x int64) string {
if x == 0 {
return "0"
}
var buf [20]byte
i := len(buf)
for x > 0 {
i--
buf[i] = byte('0' + x%10)
x /= 10
}
return string(buf[i:])
}