#227. [R37F]增长药剂

[R37F]增长药剂

时空限制

1S/512M

题目描述

兔子国的 Tom 正在加工种出来的胡萝卜,他买了 nn 瓶增长药剂,每瓶药剂的功效可能不同,药剂的功效用序列 a1,a2,,ana_1,a_2,\cdots,a_n 表示。

他有 nn 根胡萝卜,它们的大小分别是 1,2,,n1,2,\cdots,n,他先把他的 nn 根胡萝卜随机打乱并排成一排,每根的大小用排列 p1,p2,,pnp_1,p_2,\cdots,p_n 来表示,然后对第 ii 根胡萝卜使用第 ii 瓶药剂,之后第 ii 根胡萝卜的大小 pip_i 会变成 pi×aip_i \times a_i

Tom 喜欢整齐的升序排列的胡萝卜,一个胡萝卜序列的不整齐度定义为其逆序对数量,他想知道喷洒完药剂后序列 pp 的不整齐度是多少,由于他是随机打乱的,因此对于 pp 的所有 n!n! 种情况,你要计算每种情况的不整齐度之和,答案可能很大,请输出对 998244353998244353 取模的结果。

对于一个长度为 nn 的序列 a1,a2,,ana_1,a_2,\dots,a_n,如果一对下标 (i,j)(i,j) 满足 1i<jn1 \le i < j \le nai>aja_i > a_j,则称这对下标 (i,j)(i,j) 构成了序列的一个逆序对。

输入格式

第一行包含一个整数 nn,表示胡萝卜数量及药剂数量。

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\cdots,a_n,表示 nn 瓶药剂的功效。

输出格式

一行一个整数,表示每种情况喷洒完药剂后序列的不整齐度之和,输出对 998244353998244353 取模的结果。

样例

样例输入 1

3
1 2 1

样例输出 1

8

样例输入 2

4
2 3 1 2

样例输出 2

74

数据范围

子任务编号 分数 nn \le aia_i \le
11 1010 99 1010
22 1010 500500
33 1010 2×1052\times 10^5 11
44 2020 22
55 5050 1010

对于 100%100\% 的数据,1n2×1051 \le n \le 2 \times 10^51ai101 \le a_i \le 10