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