问题 G: 套娃收纳

内存限制:256 MB 时间限制:1 S 标准输入输出
题目类型:传统 评测方式:Special Judge 上传者:
提交:0 通过:0

题目描述

locytus 有 n 个大小不一的套娃。每个套娃有一个内径 li 和一个外径 ri,第 i 个套娃能嵌套到第 j 个套娃里当且仅当 ri≤lj,此外,每个套娃至多只能套住一个套娃。(被套住的套娃可以再套住另一个套娃)

套娃太多太占地方了,所以 locytus 决定把套娃尽可能套在一起,让所有套娃占的总空间最少。

具体来说,locytus 需要把序列 {(l1,r1),…,(ln,rn)} 任意排序后,再划分成若干子序列 S1,…,Sm,使得每个序列形如 Sj={(lj,1,rj,1),…,(lj,|Sj|,rj,|Sj|)} 满足 lj,t≥rj,t+1,t=1,2,…,|Sj|−1. 并且 Σ1≤j≤mrj,13 最小。

满足要求的套娃方案很多,locytus 想知道一共有多少种可能的方案。

方案数可能很大,只需要输出对 109+7 取模后的结果。

(注:两个方案 {Si},{Ti}不同当且仅当存在有序集 Si 与任意 Tj 均不相同,而诸如 {S1,S2} 和 {S2,S1} 这样的重排视为同一种方案)

输入格式

第一行包含一个正整数 n (1≤n≤105),表示套娃总数。

接下来的 n 行,每行包含两个正整数 li,ri(1≤li<ri≤2×105),表示每个套娃的内径和外径。数据保证不存在i≠j 使得 (li,ri)=(lj,rj)

输出格式

输出一个正整数,表示方案数对 109+7 取模的值。

输入样例 复制

4
4 5
2 4
3 4
1 2

输出样例 复制

4

数据范围与提示

样例的四种划分方案如下:
S1={(4,5),(2,4),(1,2)},S2={(3,4)}
S1={(4,5),(3,4),(1,2)},S2={(2,4)}
S1={(4,5),(2,4)},S2={(3,4),(1,2)}
S1={(4,5),(3,4)},S2={(2,4),(1,2)}