810002 - 鬼谷子钱袋Ⅱ

通过次数

1

提交次数

2

时间限制 : 1 秒
内存限制 : 128 MB

鬼谷子有n个钱袋,编号互不相同,每个钱袋装有金币a_i枚。他希望携带总计m枚金币的若干袋钱袋出门。

当他需要在街上支付[1,m]的任意整数枚的金币时,(他不需要从钱袋中取出金币支付,而是)可以选择其中几个钱袋组合 起来支付。

求有多少种钱袋的方案。两个方案不同,只要存在一个的编号,其中一个方案中有此钱袋编号,另一个方案中没有此钱袋编号。

方案可能很多,只需要输出其对{10}^9+7模即可。

输入

从文件bag.in中读入数据。第一行包含两个正整数 n、m

第二行包含 n 个整数,表示各个钱袋的金币数a_i

输出

输出到文件bag.out中。输出一个整数,代表满足要求钱袋方案数。

样例

输入

4 6
1 2 3 5

输出

1

提示

方案只有1种,就是选择钱币数1、2、3的三个钱袋。

如果需要支付1金币,可以使用钱袋1。

如果需要支付2金币,可以使用钱袋2。

如果需要支付3金币,可以使用钱袋3。

如果需要支付4金币,可以使用钱袋1、3。

如果需要支付5金币,可以使用钱袋2、3。

如果需要支付6金币,可以使用钱袋1、2、3。

如果选择钱袋1和钱袋4,则无法支付2、3、4金币。

对于所有测试数据有:1\le n\le500,1\le m\le20000,{1\le a}_i\le m

来源

原创