Sandra 最近买了她的第一部智能手机。她的一个朋友建议她安装一个很长的应用程序(通常称为“apps”)列表。Sandra 立即开始从列表中安装应用程序,但在安装了几个之后,手机的磁盘空间不足,无法再安装任何应用程序。有时,应用程序安装失败是因为甚至没有足够的空间来下载安装包。其他应用程序虽然可以正常下载,但没有足够的空间来存储已安装的应用程序。
Sandra 安装的每个应用程序都有一个下载大小 $d$ 和一个存储大小 $s$。为了下载该应用程序,Sandra 的手机必须至少有 $d$ 兆字节的可用磁盘空间。应用程序安装完成后,它会在手机上占用 $s$ 兆字节的磁盘空间。下载大小可能小于存储大小(例如,如果应用程序数据经过了高压缩),也可能大于存储大小(例如,如果下载内容包含可能不会被使用的材料,如不同语言的翻译)。安装程序非常高效,可以将下载的安装包转换为已安装的应用程序,而无需使用任何额外的磁盘空间。因此,要安装一个应用程序,手机必须至少有 $\max(d, s)$ 兆字节的可用磁盘空间。
移动无线电话,公有领域
Sandra 很快意识到,她可能仅仅因为安装顺序不对而耗尽了空间。因此,她决定再试一次。她卸载了所有应用程序,现在将选择一个安装顺序,让她能够从列表中安装尽可能多的应用程序。Sandra 不得安装任何应用程序超过一次。
请帮助她确定应该安装列表中的哪些应用程序,以及安装的顺序。
输入格式
输入包含: 一行,包含两个整数 $n, c$ ($1 \le n \le 500, 1 \le c \le 10\,000$),表示可用应用程序的数量和手机的可用磁盘空间(以兆字节为单位)。 $n$ 行,每行包含两个整数 $d, s$ ($1 \le d, s \le 10\,000$),表示一个应用程序的下载大小和存储大小(以兆字节为单位)。
输出格式
输出一行,包含可以安装的应用程序的最大数量。然后输出一行,列出这些应用程序的编号,按照 Sandra 应该安装它们的顺序排列。如果无法安装任何应用程序,则可以省略这一行。
应用程序按照它们在输入中给出的顺序从 $1$ 到 $n$ 进行编号。如果存在多个最优解,输出其中任意一个即可。
样例
样例输入 1
2 100 99 1 1 99
样例输出 1
2 1 2
样例输入 2
2 100 500 1 1 500
样例输出 2
0