```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n int
var h int64
if _, err := fmt.Fscan(in, &n, &h); err != nil {
return
}
x1 := make([]int64, n)
x2 := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &x1[i], &x2[i])
}
l := 0
var sumLen int64 = 0
var sumGap int64 = 0
ans := h
for r := 0; r < n; r++ {
if r > l {
sumGap += x1[r] - x2[r-1]
}
sumLen += x2[r] - x1[r]
for sumGap > h {
sumLen -= x2[l] - x1[l]
if l+1 <= r {
sumGap -= x1[l+1] - x2[l]
}
l++
}
if h+sumLen > ans {
ans = h + sumLen
}
}
fmt.Fprintln(out, ans)
}
```