禁书目录
题号:NC20619
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

X组织需要定期给Index清除记忆,在此之前需要把当中的十万三千本禁书取出来......
不幸的是,禁书一旦离开了Index就非常脆弱,具体来说,每一本禁书都有一个魔力值 ai ,其记载的内容是 bi ,取出后的 n 本不同的禁书形成了一个排列,如果说对于一本禁书 i ,其左边存在一本不弱于它的魔力值的禁书 j ,禁书 i 就会因为禁书 j 的影响而消失。求对于所有可能的禁书排列,能保留下来的记载内容的种类数之和。由于答案可能很大,只需要输出对 998244353 取模后的结果即可。

输入描述:

第一行一个数 n。
接下来 n 行,第 i 行两个整数 ai, bi ,表示第 i 本禁书的魔力值和记载内容。

输出描述:

输出共一个数,表示答案。
示例1

输入

复制
4
1 5
4 3
5 2
3 1

输出

复制
50

备注:

1 ≤ n ≤ 5 x 105, 1≤ ai, bi ≤ 108