package main
import (
"fmt"
"sort"
)
func main() {
var n, m, k int
fmt.Scan(&n, &m, &k)
a := make([]int, n+1)
aa := [][2]int{}
for i := 0; i < m; i++ {
var li, ri int
fmt.Scan(&li, &ri)
aa = append(aa, [2]int{li, ri})
}
sort.Slice(aa, func(j, k int) bool {
return aa[j][0] < aa[k][0]
})
for _, v := range aa {
a[v[0]]++
a[v[1]]--
}
b := make([]int, n+1)
for i := 1; i < len(a); i++ {
b[i] = b[i-1] + a[i]
}
c := make([]int, n+1)
for i := 1; i < len(b); i++ {
c[i] = c[i-1] + b[i]
}
maxSum := 0
for i := 0; i < len(a)-k; i++ {
if c[i+k]-c[i] > maxSum {
maxSum = c[i+k] - c[i]
}
}
fmt.Println(maxSum)
}