D. 徐老师的模数序列

    传统题 文件IO:mod 1000ms 512MiB

徐老师的模数序列

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

文件读写

本题使用文件输入输出,请在程序开头加入:

freopen("mod.in", "r", stdin);
freopen("mod.out", "w", stdout);

题目描述

徐老师有一个包含 nn 个整数的序列 aa,分别为 a1,a2,a3…ana_1,a_2,a_3 \dots a_n

他可以选择一个正整数 kk 进行一个特殊的操作—— a%ka \% k

也就是将 aa 序列中的所有数字 %k\% k

现在徐老师想知道,如果他可以任意选择 kk 进行 a%ka \% k,并且不限操作次数

最终可能产生多少种不同的序列?

输入格式

输入第一行包含一个整数 n 表示数字个数

输入第二行包含 nn 个整数,分别为 a1,a2,a3…ana_1,a_2,a_3 \dots a_n

输出格式

输出一个答案表示不同的序列个数,由于答案可能很大,请你将答案对 1e9+71e9+7 取模

数据范围

对于所有的数据满足: 0≤n,ai≤5000 \leq n, a_i \leq 500

其中数据点分别满足以下情况

测试点 特殊性质
1∼21\sim 2 n=2n = 2
3∼53\sim 5 ai≤20a_i \leq 20
6∼106\sim 10 ai=ia_i = i
3
1 3 4
6

样例解释1

可以执行 a%5a\%5,得到序列 {1,3,4}\{1,3,4\}

可以执行 a%4a\%4,得到序列 {1,3,0}\{1,3,0\}

可以执行 a%3a\%3,得到序列 {1,0,1}\{1,0,1\}

可以执行 a%2a\%2,得到序列 {1,1,0}\{1,1,0\}

可以执行 a%1a\%1,得到序列 {0,0,0}\{0,0,0\}

可以依次执行 a%4,a%3a\%4,a\%3,得到序列 {1,0,0}\{1,0,0\}

10
1 2 3 4 5 6 7 8 9 10

样例输出2

256