use proconio::input; use itertools::Itertools; fn check(p: Vec<(usize, usize)>) -> bool { let len = p.len(); let mut current = p[0].0; for i in 1..len { if current <= p[i].1 { current = current.max(p[i].0); } else { return false; } } return true; } fn main() { input!{ n: usize, mut lr: [(usize, usize); n] } let mut ans = 0; for prm in lr.into_iter().permutations(n) { if check(prm) {ans+=1;} } println!("{:?}", ans); }