#abc272h. [abc272_h]Flipping Coins 2

[abc272_h]Flipping Coins 2

题目描述

NN 枚编号为 0,1,ldots,N10,1,\\ldots, N-1 的硬币排成一行。初始时,所有硬币都是正面朝上。同时,你还有一个长度为 NN 的序列 AA,其中的元素是 00N1N-1 之间的整数。

Snuke 将以相等的概率选择置换 p=(p1,p2,ldots,pN)p=(p_1,p_2,\\ldots,p_N),其中 pp(1,ldots,N)(1,\\ldots,N) 的一个排列,并进行 NN 次操作。在第 ii 次操作中,(1leqileqN)(1\\leq i \\leq N)

  • 他将翻转 (Api+1)(A_{p_i}+1) 枚硬币:第 (i1)bmodN(i-1) \\bmod N 枚硬币,第 (i1+1)bmodN(i-1+1 ) \\bmod N 枚硬币,ldots\\ldots,以及第 (i1+Api)bmodN(i -1+ A_{p_i}) \\bmod N 枚硬币。

经过这 NN 次操作后,Snuke 从他的母亲那里得到 kk 日元(日本的货币),其中 kk 是正面朝上的硬币的数目。

求 Snuke 得到的日元的期望值除以 998244353998244353 所得的余数。

期望值模 998244353998244353 的定义

在此问题中,我们可以证明所求的期望值总是一个有理数。除此之外,在问题的约束下,当所求的期望值表示为一个不可约分数 fracyx\\frac{y}{x} 时,可以保证 xx 不可被 998244353998244353 整除。

然后,存在一个 00998244352998244352 之间的整数 zz,满足 xzequivypmod998244353xz \\equiv y \\pmod{998244353},并且这个 zz 是唯一确定的。找到这样的 zz

约束条件

  • 1leqNleq2times1051 \\leq N \\leq 2\\times 10^5
  • 0leqAileqN10 \\leq A_i \\leq N-1
  • 输入中的所有值都是整数。

输入

输入从标准输入中以以下格式给出:

NN A1A_1 A2A_2 ldots\\ldots ANA_N

输出

输出答案。


示例输入 1

2
0 1

示例输出 1

1

pp 可以是 (1,2)(1,2)(2,1)(2,1)

  • 如果选择 (1,2)(1,2) 作为 pp

在第一次操作中,翻转硬币 00;在第二次操作中,翻转硬币 11 和硬币 00。有一枚硬币,即硬币 00,正面朝上,所以他得到了 11 日元。

  • 如果选择 (2,1)(2,1) 作为 pp

在第一次操作中,翻转硬币 00 和硬币 11;在第二次操作中,翻转硬币 11。有一枚硬币,即硬币 11,正面朝上,所以他得到了 11 日元。

因此,他得到的日元的期望值为 11


示例输入 2

4
3 1 1 2

示例输出 2

665496237

输出期望值模 998244353998244353