小 A 最近研究学习背包问题。他有 n 个物品,第 i 个物品的价值为 a_i 。
小 A 在得知小 B 最近生活困难后,决定在这 n 个物品中挑选出价值和为 m 的物品装在背包里带给小 B 。
谁知小 A 在到小 B 家后,发现自己的背包破了一个洞,有一些背包里的物品(可能没有物品也可能所有是所有物品)遗失了。小 A 想知道,背包里剩余的物品的价值和可能是多少?
第一行两个整数 n,m 。
接下来一行 n 个整数,a_1,a_2,...,a_n 表示每个物品的价值。
共一行若干个整数,表示背包里剩余的物品的价值和可能是多少,按从小到大输出。
5 8 4 3 4 4 1
0 1 3 4 5 7 8
样例解释
小 A 本来背包里的物品可能是 \{4,4\} 或 \{1,3,4\} ,最后剩下物品价值和分别可能是 \{0,4,4+4=8\} 和 \{0,1,3,4,1+4=5,3+4=7,1+3+5=8\} 。
数据范围
对于所有数据 n,m,a_i\le 500 。
| 测试点 | 数据范围 |
| :---------: | :----------: |
| 1\sim 3 | n\le 8 |
| 4\sim 8 | n\le 16 |
| 9\sim 12 | n,m\le 50 |
| 13\sim 16 | n,m\le 100 |
| 17\sim 20 | 无限制 |
时间限制 | 1 秒 |
内存限制 | 512 MB |