package main
import("bufio"."fmt""io""os""sort")// SortedList 1372msfuncsolve(in io.Reader, out io.Writer){var n intFscan(in,&n)type seg struct{ i, l, r int}
a :=make([]seg, n)for i :=0; i < n; i++{Fscan(in,&a[i].l,&a[i].r)
a[i].i = i
}
sort.Slice(a,func(i, j int)bool{return a[i].r < a[j].r })
ans :=make([]int, n)
p :=NewSortedList()for_, s :=range a {
l, i := s.l, s.i
//ans[i] = len(p) - p.BisectLeft(l)
ans[i]= p.Len()- p.BisectLeft(l)
p.Add(l)}for_, v :=range ans {Fprintln(out, v)}}funcrun(_r io.Reader, _w io.Writer){
in := bufio.NewReader(_r)
out := bufio.NewWriter(_w)defer out.Flush()solve(in, out)}funcmain(){run(os.Stdin, os.Stdout)}type SortedList struct{
Small []int
Large []int}funcNewSortedList() SortedList {var small []intvar large []intreturn SortedList{small, large}}func(u *SortedList)Add(v int){iflen(u.Small)>6700{
u.Large =append(u.Large, u.Small...)
u.Small =[]int{}
sort.Ints(u.Large)}iflen(u.Small)==0|| u.Small[len(u.Small)-1]<= v {
u.Small =append(u.Small, v)}elseif u.Small[0]>= v {
u.Small =append([]int{v}, u.Small...)}else{
p := sort.Search(len(u.Small),func(i int)bool{return u.Small[i]>= v })
t :=append([]int{}, u.Small[p:]...)// 实现insert 需要保存临时变量
u.Small =append(u.Small[:p], v)
u.Small =append(u.Small, t...)//u.Small = append(u.Small[:p], append([]int{v}, u.Small[p:]...)...)}}func(u SortedList)BisectLeft(v int)int{return sort.Search(len(u.Small),func(i int)bool{return u.Small[i]>= v })+ sort.Search(len(u.Large),func(i int)bool{return u.Large[i]>= v })}func(u SortedList)Len()int{returnlen(u.Small)+len(u.Large)}