package main import . "fmt" func main() { var n int Scan(&n) ls := make([]int, n) rs := make([]int, n) for i := range ls { Scan(&ls[i], &rs[i]) } ans := 0 for i := 0; i < (1 << (3*(n-1))); i++ { v := i s := n*(n-1)/2 f := 0 p := []int{} for j := 0; j < n-1; j++ { a := v&7 v >>= 3 p = append(p, a) f |= 1 << a s -= a } if s < 0 { continue } p = append(p, s) f |= 1 << s if f != (1 << n)-1 { continue } ok := true for j := range p[1:] { if ls[p[j]] > rs[p[j+1]] { ok = false } } if !ok { continue } e := ls[p[0]] for _, t := range p[1:] { if e > rs[t] { ok = false } else { e = max(e, ls[t]) } } if ok { ans++ } } Println(ans) }