package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n int
fmt.Fscan(in, &n)
type Event struct {
pos int64
delta int64
}
events := make([]Event, 0, 2*n)
for i := 0; i < n; i++ {
var l, r int64
fmt.Fscan(in, &l, &r)
events = append(events, Event{l, 1})
events = append(events, Event{r + 1, -1})
}
sort.Slice(events, func(i, j int) bool {
return events[i].pos < events[j].pos
})
ans := make([]int64, n+2)
var curr int64
var prev int64
for i := 0; i < len(events); {
pos := events[i].pos
if i > 0 && pos > prev {
ans[int(curr)] += pos - prev
}
for i < len(events) && events[i].pos == pos {
curr += events[i].delta
i++
}
prev = pos
}
for i := 1; i <= n; i++ {
if i > 1 {
fmt.Fprint(out, " ")
}
fmt.Fprint(out, ans[i])
}
fmt.Fprintln(out)
}