Messages
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
Special Judge, 64bit IO Format: %lld

题目描述

Monocarp 是 n 个学生的导师,他通过发送消息和学生练习。现在有很多条消息,Monocarp 希望第 i 个学生能够阅读编号为 m_i 的消息。但是学生只会阅读置顶的消息,因此他需要把一些消息置顶。

学生 i 有一个属性 k_i。如果 Monocarp 置顶了 t 条消息,若 ,该学生会阅读所有置顶消息;否则,该学生会从置顶的 t 条消息中随机选 k_i 条阅读。

你需要求出在使得第 i 名学生阅读到编号为 m_i 的消息的 i 的数量的期望值最大时,Monocarp 应该置顶哪些消息。如果有多个答案,输出任意一种。

输入描述:

第一行一个整数 

接下来 n 行,第 i 行有两个整数

输出描述:

第一行一个整数 ,表示你置顶的消息条数。

第二行包含 t 个不同的整数 ,表示你置顶的消息编号。
示例1

输入

复制
3
10 1
10 2
5 2

输出

复制
2
5 10
示例2

输入

复制
3
10 1
5 2
10 1

输出

复制
1
10
示例3

输入

复制
4
1 1
2 2
3 3
4 4

输出

复制
3
2 3 4
示例4

输入

复制
3
13 2
42 2
37 2

输出

复制
3
42 13 37