鬼谷子有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。
原创