3104 - Cukierki

通过次数

0

提交次数

0

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

Bytie 要去参加 Bitek 的生日聚会。他知道 Bitek 喜欢吃甜食,所以他想送他一些糖果作为礼物。他买了 n 袋糖,其中第 i 袋包含 a_i 个糖果。

然而,这些糖相当重,Bytie 想知道他是否需要把它们全都给 Bitek。他决定,他将选择一个非空的袋装糖果子集,把它们拿给 Bitek,并对他说:「我这里总共有 x 颗糖果,你想要多少?」,其中 x 将是带到派对上的包装里的糖果总数。Bitek 听到这个问题后,可能会选择区间 [1, x] 中的任何整数 y。无论 Bitek 的回答如何,他都希望能够从带到派对上的糖中选择一部分(其余的留给自己),这样这些袋糖中的糖果总数正好等于 y。当然,不可以撕毁包装纸——给散装的糖果是不礼貌的。

因此,Bytie 在想,他能给 Bitek 带去多少种非空的袋装糖果子集,以便在不考虑 Bitek 的选择的情况下,能够送给他所需数量的糖果。请帮助他计算一下吧!由于这种子集的数量可能非常大,请输出它对 10^9+7 取模后的结果。

输入

第一行一个整数 n,表示 Bytie 有的袋装糖果数量。

第二行 n 个整数 a_1,a_2,\cdots,a_n,表示每袋糖果中糖果的数量。

输出

输出可能的袋装糖果子集种类数对 10^9+7 取模后的值。

样例

输入

5
2 7 4 4 1

输出

8

提示

样例 1 解释

Bytie 可以带去 8 种非空子集:{5}, {1, 5}, {1, 3, 5}, {1, 4, 5}, {1, 3, 4, 5}, {1, 2, 3, 5}, {1, 2, 4, 5} 和 {1, 2, 3, 4, 5}。例如,Bytie 带去的子集是 {1,2,4,5},Bitek 想要 9 颗糖果时,Bytie 只能给他第 1,2 包糖。Bytie 不可以带去 {1,2,5} 子集,如果 Bitek 想要 6 颗糖的话 Bytie 就犯难了。

对于 100\% 的数据,保证 1\le n\le 5\times 10^31\le a_i\le 5\times 10^3

来源

Potyczki