桌上有 $n$ 张牌。每张牌上写有两个数字——牌的等级和序列号。你需要组建一副牌组:
- 你从桌上剩余的牌中一张一张地拿牌,顺序不限;
- 你不能连续拿两张等级相同的牌。第一张牌可以是任意等级;
- 从第二张牌开始,对于桌上剩余的牌中,等级严格介于当前牌等级和上一张牌等级之间的每一张牌,你都需要支付一枚硬币;
- 支付完成后,桌上剩余牌中所有序列号小于或等于当前牌序列号的牌都会被移除;
- 从第三张牌开始,必须满足“力方向改变”条件,即设当前、上一张和上上张选定牌的等级分别为 $a, b, c$。如果 $b < \min(a, c)$ 或 $b > \max(a, c)$,则条件满足;
- 当无法从桌上剩余的牌中选择下一张牌时,牌组组建结束。
计算所有可能牌组的硬币总成本。如果一个牌组中包含某张牌而另一个牌组不包含,则认为这两个牌组不同。注意,不同的牌可以具有相同的等级和序列号。
输入格式
第一行包含整数 $n$ ——桌上牌的总数。 接下来的 $n$ 行,每行包含两个整数 $s_i$(第 $i$ 张牌的等级)和 $k_i$(第 $i$ 张牌的序列号)。
$1 \le n \le 10^5$ $1 \le s_i, k_i \le 10^9$
输出格式
你需要输出所有可能牌组的硬币总成本,对 $10^9 + 7$ 取模。
样例
样例输入 1
6 8 8 5 9 9 4 3 9 3 1 7 5
样例输出 1
42