在一次最小表示法相关的作业中,有 n 个字符串 s1,s2,…,sn,其长度分别为 a1,a2,…,an。
定义 f(s) 为字符串 s 的字典序最小循环移位的起始位置。由于这样的起始位置可能不唯一,因此 f(s) 取最小的可能位置。例如对于字符串 cbacba
,它的最小循环移位是 acbacb
,选取的起始位置是 3(这里使用 1-index)。
作业的要求是按顺序写下 f(s1),f(s2),…,f(sn)。然而,由于小 A 的粗心,他错误地按照以下顺序写下了答案:f(sn),f(s1),f(s2),…,f(sn−1)。
假设这些字符串的每个字符是由老师等概率随机生成的,仅包含小写英文字母。你需要帮助小 A 计算他的作业中期望正确答案的数量,对 998244353 取模。
输入格式
第一行包含一个整数 n,表示作业中给出的字符串数量。
第二行包含 n 个整数 a1,a2,…,an,表示字符串的长度。
输出格式
输出一个整数,表示答案。
样例输入 1
5 3 1 5 2 4
样例输出 1
727907401
样例输入/输出 2~4
见下发文件。
数据范围
对于所有数据,1≤n≤105,1≤ai≤105。
子任务编号 | n≤ | ai≤ | 特殊性质 | 得分 |
---|---|---|---|---|
1 | 5 | 5 | 无 | 15 |
2 | 100 | 1000 | 无 | 20 |
3 | 100 | 100000 | 无 | 15 |
4 | 100000 | 100000 | ai 全相等 | 15 |
5 | 50000 | 100000 | 无 | 15 |
6 | 100000 | 100000 | 无 | 20 |