#L0032. 平均值为整数的小组

平均值为整数的小组

题目描述

小杨有 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n

他想从这 nn 个整数中选出若干个(至少 11 个)组成一个小组,使得这个小组里所有整数的平均值恰好是一个整数。

请你帮小杨计算:一共有多少种不同的选法?由于答案可能很大,请输出答案对 109+710^9 + 7 取模的结果。

两种选法不同,当且仅当存在某个整数在一种选法中被选中、在另一种选法中没被选中。

输入格式

输入共两行。

第一行为一个整数 nn,表示整数的个数。

第二行为 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n

输出格式

输出一个整数,表示选法数对 109+710^9 + 7 取模的结果。

样例

3
2 6 2
6
5
5 5 5 5 5
31

样例解释

样例 1 中,设三个数的位置分别为 1,2,31,2,3,其中第 11 个和第 33 个数都是 2266 种选法分别为:选位置 11、选位置 22、选位置 33、选位置 1,21,2、选位置 1,31,3、选位置 2,32,3,它们的平均值分别为 2,6,2,4,2,42, 6, 2, 4, 2, 4,都是整数;而选位置 1,2,31,2,3 的平均值为 103\frac{10}{3},不是整数。共 66 种。

样例 2 中,任意选法的平均值都是 55,一定是整数,55 个数的所有非空子集共 251=312^5 - 1 = 31 种。

数据范围与约定

子任务 分值 限制
11 77 n15n \leq 15
22 88 所有 aia_i 都相等
33 1010 无特殊限制

对于 100%100\% 的数据,保证 1n1001 \leq n \leq 1001ai1091 \leq a_i \leq 10^9