← Home
```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)
}
```