#DMY65F. lcp计数

lcp计数

题目描述

给出一个长度为 nn 的数组 aa

SSaa 的所有不同的、非空子序列的集合。两个子序列被视为相同,当且仅当它们对应的元素序列完全相同。也就是说,即使它们在原数组中选取的下标不同,只要值序列相同,就只保留一个。

对于两个序列 uuvv,定义 lcp(u,v)\operatorname{lcp}(u,v) 为它们最长公共前缀的长度。

请计算:

uSvSlcp(u,v)\sum_{u\in S}\sum_{v\in S}\operatorname{lcp}(u,v)

由于答案可能很大,请输出它对 998244353998244353 取模后的结果。

输入格式

第一行包含一个正整数 nn

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

输出格式

输出一个整数,表示答案对 998244353998244353 取模后的结果。

3
1 2 1
27

样例 1 解释

数组 [1,2,1][1,2,1] 的所有不同非空子序列为:

[1],[2],[1,2],[1,1],[2,1],[1,2,1][1],[2],[1,2],[1,1],[2,1],[1,2,1]

枚举所有有序二元组 (u,v)(u,v) 后,lcp(u,v)\operatorname{lcp}(u,v) 的总和为 2727

2
1 1
5

数据范围

子任务编号 分数 限制
11 1010 n10n\le 10
22 3030 n1000n\le 1000
33 6060 n2×105n\le 2\times 10^5

对于全部数据,1n2×1051\le n\le 2\times 10^51ain1\le a_i\le n